Quiero crear la aplicación Ruby (no rieles). Esta es una aplicación de consola que deberá conservar algunos datos. Estoy usando pstore como la base de datos. Quiero implementar esta aplicación como una gema.Ruby Gems con datos persistentes
Mi pregunta es: ¿dónde viven mis datos?
Actualmente he creado un directorio de datos como hermano en el directorio bin en un diseño de gemas estándar. Por lo tanto, esperaría que la gema almacenara sus datos "dentro de sí misma" después de que se desplegara. Pero cuando realizo una prueba local de gema para probar, descubro que los datos se almacenan localmente en los archivos del proyecto, no en algún lugar dentro del directorio gems.
Por supuesto, podría ser que simplemente no entiendo lo que "rake install_gem" está haciendo. Además, estoy vagamente preocupado de que si necesito sudo instalar la gema, realmente será capaz de crear el archivo de datos "dentro de sí mismo" en el directorio gem.
¿Alguien puede aclarar esto un poco?
Gracias. John Schank
@makevoid - gracias por la respuesta. Aquí está la totalidad de mi guión principal. En el directorio/bin ... (he añadido a la pregunta principal, porque no estoy familiarizado con cómo formatear el contenido en un comentario - y el código pegado un aspecto horrible
#!/usr/bin/env ruby
$LOAD_PATH.unshift File.dirname(__FILE__) + '/../lib'
require 'timesheet'
begin
command_hash = TimesheetParser.parse
store = YAML::Store.new("data/time_entries.yaml")
tl = TimeLog.new(store)
ts = Timesheet.new(tl)
ts.process(command_hash)
rescue Exception => e
raise if command_hash[:debug]
puts e.message
¿Puede imprimir y decirnos la ruta donde se está guardando el archivo de su PStore? ¿Eso es en tu ruta de carga de gema primaria? (* gem env * para resolverlo) – makevoid
Agregué los detalles a la publicación original, porque los comentarios no parecen tener tantas capacidades de edición – jschank
OK, así que parece que quiero usar la respuesta publicada por Johannes, y probablemente haga algo así como buscar ENV ["timesheet_home"] para que los usuarios puedan anular la ubicación, volver a ENV ["HOME"] más alguna ubicación estándar como en la respuesta de Johannes. Y falla, con una explicación, si ninguno está configurado. ¡Gracias a todos los que respondieron! – jschank