无论如何,是否可以在Rails应用程序内部设置简单的任务计划?我想每小时或每天或每周都有一些代码。我不想将它们分解为单独的脚本,然后我必须通过Cron Jobs安排这些脚本。如果我这样做了,那么我必须记得备份脚本,如果我重建服务器,我必须去添加所有cron作业,这似乎有点混乱。

我希望我可以在我的Rails应用程序中的某个地方安排工作,并在我想要的时候神奇地运行!有任何想法吗?

有帮助吗?

解决方案

有一些宝石/插件,例如rufus-scheduler或更流行的“ whewwhew whe”宝石。我确实喜欢@douglassellers的解决方案,但我没有听说过。

其他提示

我使用延迟作业,这是一个“数据库支持异步优先级队列”来完成类似的事情。看一下 http://github.com/tobi/delayed_job

您仍然需要有一些可以启动“ Rake Jobs:工作”的东西,但是比拥有很多不同的Cron工作要好。在文档中注意:run_at属性 - 看起来它可能会解决“我的铁路应用程序中的作业计划,并在我希望它们遇到问题时神奇地运行”问题。

您可以使用Rails Cron(GEM Install Rails_cron)之类的东西来执行此操作,该操作旋转了另一个用于执行预定背景任务的导轨过程。我建议不要这样做,因为必须对额外的铁路实例进行监控和停止,并与您的其余应用一起开始,并且根据我的经验,很容易跌倒。

一个更好的解决方案是仅使用craken, http://github.com/latimes/craken, ,通过您的Rails应用程序中的YAML文件管理crontabs。每个计划的任务都在YAML文件中定义,然后在部署中定义了CRAKEN,决定是否需要更新系统级别的crontab文件。它直接插入您的Capistrano部署文件中,并且是合理的交钥匙。这提供了在Rails应用程序中仍在管理您的计划任务的优势,同时实际上使用OS级别的CRON执行它们。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top