Мы размещаем наше приложение Ruby on Rails с приложением EngineYard App Cloud, которое очень хорошо сработало для нас.Они предоставляют серию обратных вызовов развертывания (before_restart, after_restart и т. Д.), Которые аналогичны обратным вызовам Capistrano.
У нас в приложении есть ряд задач Rake, которые поддерживают различные части приложения.Если мы добавим новое бизнес-правило в базу данных, нам может понадобиться перезагрузить связанные бизнес-правила пользователей и т. Д.
Это задачи, для которых нет жесткого или быстрого графика, но мы также не хотимзапускать каждую задачу в каждом развертывании, потому что они замедляют процесс развертывания.
Существуют ли системы, которые позволили бы нам определить задачу для запуска при следующем развертывании, что-то вроде миграции.Идеальная система, на мой взгляд, будет работать следующим образом:
- Мы понимаем, что при следующем развертывании необходимо будет выполнить задачу
- Мы планируем задачу через систему
- При следующем развертывании система увидит список задач после развертывания - она заметит, что самая последняя из них еще не была запущена на конкретном сервере (как в случае, когда миграции уведомляют базу данных при запускетак что запускаются только самые последние незапущенные миграции) - запускается новая задача
Любые рекомендации по оптимальным методам планирования этих задач после развертывания и их запуска, если они еще не выполненыбыл запущен на сервере?
Спасибо!