Приложение Capistrano Rails SQLite3 Не удается открыть базу данных
Мне удалось развернуть приложение Rails с Capistrano на сервере под управлением NGinx & Passenger. При развертывании я получал сообщение "Извините, что-то пошло не так" и был довольно смущен, так как рабочий журнал был пустым. Затем я переключил rails_env
в development
в моем NGinx Conf & теперь я получаю:
SQLite3::CantOpenException
unable to open database file
Rails.root: /www/testcap/releases/20120407015032
Я вошел на сервер, в current
папка внутри testcap
(который я считаю символические ссылки на последний выпуск) и побежал rake db:create
, однако файлы БД существуют. Посмотрев в приложении db
папка я вижу как development.db
& test.db
,
Если я бегу rails s -e production
и затем перейдите на myurl.com:3000 приложение работает совершенно нормально, что странно, и это также работает нормально, когда я запускаю rails s -e development
тоже.
Я в полной растерянности относительно того, что проблема может быть здесь. Я уверен, что это должно быть относительно очевидной проблемой, возможно, с capistrano? Я все еще новичок в этом, поэтому я вполне мог пропустить что-нибудь, но поиск в Google до сих пор был бесплодным.
Единственное, о чем я могу думать, это то, что я ничего не имею в отношении баз данных в моем config/deploy.rb
? Однако я не смог найти никаких руководств в сети, чтобы помочь до сих пор.
Заранее спасибо за помощь:)
Джек.
1 ответ
Благодаря комментариям от Adam P & Ben L выше, мне удалось продвинуться в этом вопросе. Это руководство также решило мою проблему.
Я следовал за шагами в этом руководстве выше и в моем database.yml
файл, который я изменил путь к production
дБ от:
`db/production.sqlite3`
к
`/www/testcap/shared/db/production.sqlite3`
(например, абсолютный путь)
Затем я добавил это к моему config/deploy.rb
:
role :db, "{my vps IP}", :primary => true
На своем VPS я зашел в nginx conf и удалил строку rails_env development
(Пассажир затем устанавливает его production
по умолчанию).
А потом побежал cap deploy
с последующим cap deploy:migrate
, который работал, и я получаю приложение отображается при посещении URL.
Я надеюсь, что это может помочь кому-то в будущем застрять в той же проблеме:)
Джек.