将 JRuby-On-Rails 应用程序部署为战争时,将 sqlite3 数据库放在哪里?

Jan*_*Jan 5 sqlite jruby jrubyonrails warbler winstone

背景:我想使用 warblers 可执行文件 war 部署一个小型 JRuby-On-Rails 应用程序,因此我可以删除 .war 文件,每个人都可以使用 .war 文件运行它java -jar app.war

应用程序使用sqlite3存储一些数据,production-db-file位于war内的WEB-INF/db。

每次启动应用程序时,winstone 都会将 war 解压到一个临时目录,如果应用程序第二次启动,则在此会话期间执行的所有操作都将丢失(因为生产数据库再次从 war 文件中解压)。

那么如何在每次应用程序启动时使用相同的 db 文件呢?

Nic*_*ger 6

您可以在 database.yml 中硬编码一个绝对路径,或者添加一些逻辑来从环境变量或系统属性中选择 webapp 之外的路径。例如:

production:
  db: <%= java.lang.System.getProperty('db') %>
Run Code Online (Sandbox Code Playgroud)

启动:

java -Ddb=/path/to/db -jar app.war
Run Code Online (Sandbox Code Playgroud)