2016-04-05 3 views
0

При попытке развернуть приложение Ruby on Rails с сервером Capistrano на Ubuntu 14, у меня есть проблема, файл базы данных sqlite3 всегда создается, но никакая схема не загружается, Capistrano развертывание всегда не выполняется. Когда я проверяю папку целевой базы данных на удаленном сервере, создается файл базы данных * .sqlite3, но он абсолютно пуст. Я попытался добавить задачу capistrano для загрузки схемы, но это не решило проблему.Ruby on Rails deploy Capistrano sqlite db no schema

desc 'Initial Deploy' 
    task :initial do 
    on roles(:app) do 
     execute 'cd #{current_path}; rake db:schema:load' 
     before 'deploy:restart', 'puma:start' 
     invoke 'deploy' 
    end 
    end 

Кроме того, я заметил на местном уровне, что при вызове rake db:setup базы данных схемы не загружена, я должен позвонить вручную rake db:schema:load запустить приложение локально, но как я могу это сделать в рамках развертывания Капистрано?

ответ

1

С помощью Capistrano первоначальная настройка базы данных является ручной.

Здесь билет обсуждает варианты для исправления этой ошибки: https://github.com/capistrano/rails/issues/118

+0

несмотря на то, у меня есть еще один Ruby On Rails приложение, которое использует SQLite адаптер в производстве. Должна быть какая-то конфигурация или что-то, чтобы сохранить тот же файл базы данных production.sqlite3 во время каждого развертывания Capistrano. Я думаю, что решение состоит в том, чтобы перейти в ** текущую папку развертывания ** и запустить '$ rake db: create db: schema: load' оттуда. Поэтому во время следующего развертывания Capistrano файл базы данных «не будет заменен». Но я уже настроил Postgresql, это просто для сервера постановки и производства, чем для sqlite. –

+0

Я думаю, что вы ищете, чтобы добавить сервер sqlite в linked_dirs. Это позволит хранить файлы sqlite во всех развертываниях. Но я согласен с тем, что использование postgres или mysql обычно является лучшим вариантом для prod. –

Смежные вопросы