Где разместить базу данных sqlite3 при развертывании приложения JRuby-On-Rails как войны? - PullRequest
4 голосов
/ 21 декабря 2010

Справочная информация: Я хочу развернуть небольшое JRuby-On-Rails-приложение с использованием исполняемой warblers war, поэтому я могу просто удалить .war-файл, и каждый может запустить его с java -jar app.war.

Приложение использует sqlite3 для хранения некоторых данных, а файл production-db находится в WEB-INF / db внутри войны.

Каждый раз, когда приложение запускается, winstone распаковывает war в временный каталог, и все действия, выполняемые во время этого сеанса, теряются, если приложение запускается во второй раз (потому что production-db снова распаковывается из war-каталога. файл).

Так как я могу использовать один и тот же db-файл каждый раз, когда приложение запускается?

1 Ответ

4 голосов
/ 21 декабря 2010

Вы можете либо жестко закодировать абсолютный путь в database.yml, либо добавить некоторую логику, чтобы выбрать путь вне web-приложения из переменной среды или системного свойства. Например:

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

Запуск с:

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