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

标签 sqlite jruby jrubyonrails warbler winstone

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

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

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

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

最佳答案

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

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

启动:
java -Ddb=/path/to/db -jar app.war

关于sqlite - 将 JRuby-On-Rails 应用程序部署为 war 时,将 sqlite3 数据库放在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4498100/

相关文章:

ruby-on-rails - 将 Warbler 制作的 .war 部署到 Tomcat

jruby on rails 调度选项

java - 如何永久保存在SQLite数据库中

android - 如何在 Android 中的 SQlite 中使用准备好的语句?

mysql - 从单个表中选择统计数据

java - 使用 JRuby 创建独立的 jar

jruby - 使用 Ubuntu 安装 JRuby 1.6.7 + Rails 3?

maven-2 - 使用 Maven 管理 jruby Rails 应用程序中的 Java 依赖项

tomcat - 如何将 JRuby Resque 进程部署为 war 文件?

sqlite - 在不存在文件名 fileName 的情况下调用 sqlite3 fileName 时,如何避免 sqlite3 创建新的空数据库?