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

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

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

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

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

1 ответ

Решение

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

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

Запустите с:

java -Ddb=/path/to/db -jar app.war
Другие вопросы по тегам