2010-06-17 3 views
13

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

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

Установка моего сервера: Блок debian работает с ngnix, пассажиром, mysql и репозиторием git.

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

обновление:

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

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

set :scm, :git  
set :repository, "[email protected]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" 

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

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

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

Любые идеи?

ответ

6

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

Кроме того, вы не определили своего пользователя в вашем сценарии развертывания:

set :user, "deploy_user_name" 

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

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

+0

Хм. Фактически, вы отправили сообщение об ошибке update_code. Могу я просто проверить, ваше приложение на самом деле называется example.com, вы закрыли развертывание: установка и развертывание крышки: проверьте с вашей локальной машины? example.com - это то, что вы ставите для конфиденциальности здесь, я беру его? – mark

+0

Хе-хе, да, я заменил свой настоящий домен своим примером для конфиденциальности. Кодирование будет полностью развернуто на моем сервере, это просто, что capistrano пытается выполнить миграцию на моем локальном компьютере, а не на сервере :) – Pandafox

41

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

after "deploy", "deploy:migrate" 

в вашем конфигурации/deploy.rb файл. Это приведет к миграции на вашем сервере при успешном развертывании вашего проекта.

+0

В моей deploy.rb у меня есть bundle_install задача, поэтому я использовать 'после: bundle_install,«развернуть: мигрировать»' –

+1

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

+1

@ denis.peplin Капистрано не делает для вас связку? Я удалил драгоценный камень через SSH, и он автоматически переустановлен. – Besi

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