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