Выполнение миграции на сервере при развертывании с помощью 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. Это приведет к миграции на вашем сервере при успешном развертывании вашего проекта.