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