Выполнение миграции на сервере при развертывании с помощью capistrano
Я пытаюсь развернуть приложение rails с capistrano, но у меня проблемы с моими миграциями. В моей среде разработки я просто использую sqlite как мою базу данных, но на моем рабочем сервере я использую MySQL.
Проблема в том, что я хочу, чтобы миграции выполнялись с моего сервера, а не с моей локальной машины, поскольку я не могу подключиться к своей базе данных из удаленного места.
Настройка моего сервера:
В блоке debian работает ngnix, пассажир, mysql и репозиторий git.
Каков самый простой способ сделать это?
обновление:
Здесь мое развертывание script: (я заменил свой фактический домен на example.com)
set :application, "example.com"
set :domain, "example.com"
set :scm, :git
set :repository, "[email protected]:project.git"
set :use_sudo, false
set :deploy_to, "/var/www/example.com"
role :web, domain
role :app, domain
role :db, "localhost", :primary => true
after "deploy", "deploy:migrate"
Когда я запускаю развертывание крышки, все работает нормально, пока не попытается выполнить миграцию.
Вот ошибка, которую я получаю:
** [deploy:update_code] exception while rolling back: Capistrano::ConnectionError, connection failed for: localhost (Errno::ECONNREFUSED: Connection refused - connect(2))
connection failed for: localhost (Errno::ECONNREFUSED: Connection refused - connect(2)))
Вот почему мне нужно выполнить миграцию с сервера, а не с моей локальной машины.
Любые идеи?
Ответы
Ответ 1
Добавили ли вы пользователя развертывания в качестве пользователя mysql на сервере? Я считаю, что localhost - это сервер, ссылающийся на себя не на вашу локальную машину.
Также вы не определили своего пользователя в своем развертывании script:
set :user, "deploy_user_name"
role :web, domain
role :app, domain
role :db, domain, :primary => true
Ответ 2
Попробуйте добавить
after "deploy", "deploy:migrate"
в файле config/deploy.rb. Это приведет к миграции на вашем сервере при успешном развертывании вашего проекта.