我们正在使用EngineYard App Cloud托管我们的Ruby on Rails应用程序,这对我们来说非常有用。它们提供了一系列部署回调(before_restart,after_restart等),类似于Capistrano的回调。
我们的应用程序中有一系列Rake任务,用于维护应用程序的各个部分。如果我们向数据库添加新的业务规则,我们可能需要重新加载用户的相关业务规则等。
这些任务没有硬性或快速的计划,但我们也不希望在每次部署时运行每个任务,因为它们会降低部署过程的速度。
是否有任何系统可以让我们定义在下次部署时运行的任务,有点像迁移。我认为理想的系统可以如下工作:
有关安排这些部署后任务的最佳做法的任何建议,除非它们已在服务器上运行,否则将其启动?
谢谢!
答案 0 :(得分:2)
我想到了两种方法
答案 1 :(得分:2)
尝试使用db {migrate基本操作建模的after_party ruby gem,但是用于部署后任务。使用如此名称
创建部署后(rake)任务LIB /任务/部署/ 20130130215258_task_name.rake
您当然可以在rake任务中调用任何ruby代码。文档说它支持同步和异步任务(异步任务是长时间运行的任务,你可以在应用程序启动时在后台进行)
我没有使用它,但是我准备试试,因为我们有与你所描述的相似的要求。