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

发布于 2024-10-08 18:25:24 字数 330 浏览 10 评论 0原文

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

应用程序使用sqlite3来存储一些数据,生产数据库文件位于war内的WEB-INF/db。

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

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

Background: I want to deploy a small JRuby-On-Rails-Application using warblers executable war, so I can just drop the .war-file and everyone can run it with java -jar app.war.

The application uses sqlite3 to store some data, and the production-db-file is located at WEB-INF/db inside the war.

Every time the app is started, winstone unpacks the war to a temp-directory, and all actions performed during this session are lost if the application is started the second time (because the production-db is unpacked again from the war-file).

So how can I use the same db-file every time the app ist started?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

初与友歌 2024-10-15 18:25:25

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

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

启动方式:

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

You could either hard-code an absolute path in the database.yml, or add some logic to either pick a path outside of the webapp from an environment variable or a system property. For example:

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

Launch with:

java -Ddb=/path/to/db -jar app.war
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文