我们正在使用EngineYard App Cloud托管我们的Ruby on Rails应用程序,该应用程序非常适合我们。他们提供了一系列类似于Capistrano回调的部署回调(before_restart,after_restart等)。Ruby/Rails - 运行部署后任务的更好方法?
我们在应用程序中有一系列Rake任务,它们负责维护应用程序的各个部分。如果我们向数据库添加新的业务规则,则可能需要重新加载用户的相关业务规则等。
这些任务没有硬性或快速时间表,但我们也不想运行每个部署的每个任务,因为它们减慢了部署过程。
是否有任何系统可以让我们定义要在下一次部署中运行的任务,类似于迁移。在我心中理想的系统将工作如下:
- 我们认识到,在接下来的部署,任务将需要运行
- 我们通过系统
- 安排任务在接下来的部署,系统会查看部署后任务的列表 - 它注意到最新的一个尚未在特定服务器上运行(例如迁移时数据库如何在运行时对数据库进行注释,以便仅执行最新的未运行迁移被触发) - 新任务被触发
任何关于安排这些部署后任务的最佳实践,并让它们启动,除非它们已经在服务器上运行了?
谢谢!
谢谢,罗布。很高兴在Stack Overflow上找到你。这个答案建议使用迁移可能是最好的选择(http://stackoverflow.com/questions/3671471),尽管它看起来有点肮脏。你有没有见过用于除DB之外的任何类似迁移的功能?我喜欢那种声音... – shedd 2010-09-08 21:01:00
我从来没有见过这样做。这样做似乎是切实可行的,但我总是不愿意让一件事情做一些独立的第三方不期望的事情。虽然我可能会让这个过于复杂。 – 2010-09-08 23:31:13