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