2010-12-21 6 views
4

Hintergrund: Ich möchte eine kleine JRuby-On-Rails-Anwendung mit Warblers ausführbaren Krieg bereitstellen, so kann ich einfach die .war-Datei löschen und jeder kann es mit java -jar app.war ausführen.Wohin mit der sqlite3-Datenbank bei der Bereitstellung einer JRuby-On-Rails-App als Krieg?

Die Anwendung verwendet sqlite3, um einige Daten zu speichern, und die production-db-Datei befindet sich innerhalb von WAR bei WEB-INF/db.

Jedes Mal, wenn die App gestartet wird, entpackt Winstone den Krieg in ein temporäres Verzeichnis, und alle während dieser Sitzung ausgeführten Aktionen gehen verloren, wenn die Anwendung das zweite Mal gestartet wird (weil die production-db wieder aus dem Krieg entpackt wird) -Datei).

Also wie kann ich die gleiche db-Datei jedes Mal verwenden, wenn die App gestartet wird?

Antwort

4

Sie könnten entweder einen absoluten Pfad in der Datei database.yml fest codieren oder eine Logik hinzufügen, um entweder einen Pfad außerhalb der Webanwendung aus einer Umgebungsvariablen oder einer Systemeigenschaft auszuwählen. Zum Beispiel:

production: 
    db: <%= java.lang.System.getProperty('db') %> 

Einführung mit:

java -Ddb=/path/to/db -jar app.war 
+0

Dies ist, was ich suchte, nochmals vielen Dank, Nick :) – Jan

+0

Sehr schönen Trick! hat für mich gearbeitet :) – gouravtiwari21

Verwandte Themen