【发布时间】:2010-09-08 13:15:52
【问题描述】:
我们正在使用 EngineYard App Cloud 托管我们的 Ruby on Rails 应用程序,这对我们来说非常有效。它们提供了一系列与 Capistrano 的回调类似的部署回调(before_restart、after_restart 等)。
我们的应用程序中有一系列 Rake 任务,用于维护应用程序的各个部分。如果我们向数据库添加新的业务规则,我们可能需要重新加载用户的关联业务规则等。
这些任务没有硬性或快速的时间表,但我们也不希望在每次部署时都运行每个任务,因为它们会减慢部署过程。
是否有任何系统可以让我们定义要在下一次部署时运行的任务,有点像迁移。我心目中的理想系统如下:
- 我们意识到,在下一次部署时,需要运行一个任务
- 我们通过系统安排任务
- 在下一次部署时,系统会看到部署后任务的列表——它注意到最近的任务尚未在特定服务器上运行(就像迁移在运行时如何标记数据库一样仅触发最近的未运行迁移)- 触发新任务
对于安排这些部署后任务并让它们启动(除非它们已经在服务器上运行)的最佳实践有什么建议吗?
谢谢!
【问题讨论】:
标签: ruby-on-rails ruby deployment rake