Ich möchte Ruby-Anwendung (nicht Schienen) erstellen. Dies ist eine Konsolen-App, die einige Daten beibehalten muss. Ich verwende pstore als Datenbank. Ich möchte diese Anwendung als ein Juwel bereitstellen.Ruby Gems mit persistenten Daten
Meine Frage ist: Wo leben meine Daten?
Derzeit habe ich ein Datenverzeichnis als Geschwister zum bin-Verzeichnis in einem Standard-Edelstein-Layout erstellt. Ich würde daher erwarten, dass der Edelstein seine Daten "in sich selbst" speichert, nachdem er eingesetzt wurde. Aber wenn ich ein lokales Juwel installiere, um zu testen, finde ich, dass die Daten lokal in den Projektdateien gespeichert werden, nicht irgendwo innerhalb des Edelsteinverzeichnisses.
Natürlich könnte es mir einfach missverstehen, was "Rake install_gem" macht. Außerdem bin ich vage besorgt, dass, wenn ich sudo installieren muss, das gem, dass es tatsächlich in der Lage sein wird, die Datendatei "in sich selbst" in dem Gem-Verzeichnis zu erstellen.
Kann jemand das ein wenig klären?
Vielen Dank. John Schank
@makevoid - danke für die Antwort. Hier ist die Gesamtheit meines Hauptskriptes. In/ist ... (Ich habe es auf die Hauptfrage, weil ich bin nicht vertraut mit, wie Inhalte in einem Kommentar zu formatieren - und der eingefügte Code sah schrecklich
#!/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
können Sie uns ausdrucken und uns den Pfad mitteilen, wo Ihre PStore-Datei gespeichert wird? Ist das in Ihrem primären Edelstein-Ladepfad? (* gem env * um es herauszufinden) – makevoid
Ich fügte die Details zum ursprünglichen Beitrag hinzu, weil Kommentare nicht so reichhaltige Bearbeitungsfähigkeiten zu haben scheinen – jschank
OK, so sieht es so aus, als ob ich die von Johannes gepostete Antwort verwenden möchte suche wahrscheinlich nach ENV ["timesheet_home"], damit Benutzer den Standort überschreiben können, auf ENV ["HOME"] und einen Standardstandort wie in Johannes 'Antwort zurückgreifen können. Und scheitern mit einer Erklärung, wenn keine festgelegt ist. Danke, jeder, der geantwortet hat! – jschank