Desidero creare l'applicazione di rubino (non i binari). Questa è un'app per console che dovrà conservare alcuni dati. Sto usando pstore come database. Voglio distribuire questa applicazione come una gemma.Ruby Gems con dati persistenti
La mia domanda è: dove vivono i miei dati?
Attualmente ho creato una directory di dati come un fratello della directory bin in un layout gem standard. Pertanto, mi aspetto che la gemma memorizzi i suoi dati "dentro se stessa" dopo che è stata distribuita. Ma quando eseguo un'installazione gem locale da testare, trovo che i dati vengano archiviati localmente nei file di progetto, non da qualche parte all'interno della directory gems.
Ovviamente potrebbe essere che ho capito male cosa sta facendo "rake install_gem". Inoltre, sono vagamente preoccupato che se ho bisogno di sudo per installare la gemma, sarà effettivamente in grado di creare il file di dati "dentro se stesso" nella directory gem.
Qualcuno può chiarirlo un po '?
Grazie. John Schank
@makevoid - grazie per la risposta. Ecco la totalità del mio copione principale. Nella directory/bin ... (ho aggiunto alla domanda principale perché io non sono a conoscenza di come formattare il contenuto in un commento - e il codice incollato sembrava orribile
#!/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
puoi stampare e dirci il percorso in cui viene salvato il tuo file PStore? È nel tuo percorso di caricamento della gemma primaria? (* gem env * per capirlo) – makevoid
Ho aggiunto i dettagli al post originale, perché i commenti non sembrano avere capacità di modifica avanzate – jschank
OK, quindi sembra che voglio usare la risposta inviata da Johannes, e probabilmente fare qualcosa come cercare ENV ["timesheet_home"] in modo che gli utenti possano ignorare la posizione, tornare a ENV ["HOME"] più una posizione standard come nella risposta di Johannes. E fallire, con una spiegazione, se nessuno dei due è impostato. Grazie, tutti quelli che hanno risposto! – jschank