Capistrano развертывает, но вручную запускает миграции

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

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

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

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

5
задан jrdioko 8 March 2011 в 22:09
поделиться