Запуск миграции на сервере при развертывании с помощью capistrano

Я пытаюсь развернуть приложение rails с помощью capistrano, но у меня возникли проблемы с запуском моих миграций. В моей среде разработки я просто использую sqlite в качестве базы данных, но на моем рабочем сервере я использую MySQL.

проблема в том, что я хочу, чтобы миграции выполнялись с моего сервера, а не с моей локальной машины, поскольку я не могу подключиться к моей базе данных из удаленного местоположения.

Мои настройки сервера : Коробка debian под управлением ngnix, passenger, mysql и git хранилище.

какой самый простой способ сделать это?

обновление:

вот мой сценарий развертывания:(Я заменил свой фактический домен на example.com)

set :application, "example.com"
set :domain, "example.com"          

set :scm, :git    
set :repository,  "git@example.com: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"

когда я запускаю Cap deploy, все работает нормально, пока он не попытается запустить миграцию. Вот ошибка, которую я получаю:

** [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)))

вот почему мне нужно запустить миграцию с сервера, а не с моей локальной машины.

любой идеи?

2 ответов


вы добавили пользователя развертывания в качестве пользователя mysql на сервере? Я считаю, что localhost-это сервер, ссылающийся на себя, а не на вашу локальную машину.

также вы не определили своего пользователя в сценарии развертывания:

set :user, "deploy_user_name"

role :web, domain
role :app, domain
role :db, domain, :primary => true 

попробуйте добавить

after "deploy", "deploy:migrate"

в своем config / deploy.rb. При успешном развертывании проекта на сервере будет выполняться миграция.