2011-03-08 2 views
5

Я использую Capistrano для развертывания приложения Rails. Я думаю о ситуации, когда произошли изменения базы данных, поэтому я не могу просто cap deploy, потому что миграция должна выполняться до обновления кода. Я понимаю, что есть cap deploy:migrations, но это немного более автоматическое, чем хотелось бы. Я бы хотел:Capistrano развертывает, но вручную запускает миграции

  1. Направьте новый код в каталог выпусков, но не обновите символическую ссылку или перезапустите приложение.
  2. ssh на сервер, запустите rake:db_abort_if_pending_migrations, чтобы подтвердить, что миграции, которые я хочу запустить, являются единственными отложенными, а затем запустите rake db:migrate вручную.
  3. Завершите развертывание, обновление символической ссылки и перезапуск приложения.

Есть ли простой способ сделать это со встроенными задачами Capistrano, или мне нужно будет написать собственные шаги развертывания для этого?

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

ответ

5

Try:

  1. cap deploy:update_code

  2. Делайте то, что вы описали Loging на сервер вручную или с помощью cap shell

  3. cap deploy:symlink deploy:restart

См cap -e deploy:update_code deploy:symlink deploy:restart deploy:shell для получения дополнительной информации.

Надеюсь, это будет полезно для вас.

+0

Это должно сделать это, спасибо! Есть ли какая-либо документация в любом месте в потоке задач в Капистрано (то есть какие подзадачи выполняют «развертывание крышки» на самом деле в каком порядке)? – jrdioko

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