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