Я использую Capistrano для развертывания приложения Rails.Я думаю о ситуации, когда произошли изменения в базе данных, поэтому я не могу просто cap deploy
, потому что миграция должна быть запущена до обновления кода.Я понимаю, что есть cap deploy:migrations
, но это немного более автоматически, чем мне бы хотелось.Я хотел бы:
- Вставить новый код в каталог релизов, но не обновлять символическую ссылку или перезапустить приложение.
- ssh на сервер, запустить
rake:db_abort_if_pending_migrations
,убедитесь, что миграции, которые я хочу выполнить, являются единственными ожидающими выполнения, а затем запустите rake db:migrate
вручную. - Завершите развертывание, обновите символическую ссылку и перезапустите приложение.любой простой способ сделать это с помощью встроенных задач Capistrano, или мне нужно написать свои собственные шаги развертывания, чтобы выполнить это?
Я должен также упомянуть, что я думаю о случаях (например, добавление столбцов)где миграция может быть запущена на действующей базе данных.Для более деструктивных изменений я понимаю, что во время развертывания мне нужно будет закрыть сайт со страницей обслуживания.