我在Heroku上部署了一个Rails应用程序,Heroku调度程序附加组件成功地用于日常工作 .
现在我想要 weekly job ,但调度程序附加组件不允许我每周选项 .
关于如何实现这一目标的任何建议:
-
我've tried using rufus-scheduler in the past but it caused me some problems, so that'不是一个选择 . 有关详细信息,请参阅here .
-
我正在考虑在日常工作中检查当天的事情 . 有没有人尝试过,并有反馈或知道该方法的问题?
-
非常感谢其他想法 .
5 回答
一种方法是你的第二个要点之一:
激活Heroku cron加载项,并在app / lib / tasks中添加cron.rake任务
激活Heroku调度程序加载项,并在
app/lib/tasks
中添加scheduler.rake
任务你甚至可以奢侈地定义你希望你的任务运行的那一天; o)(5是星期五)
编辑:顺便说一句,Cron已被弃用,Heroku建议切换到他们的Scheduler插件 . 这并不会改变每周工作的方法 .
EDIT2:根据sunkencity的反馈调整我的答案 .
仅使用shell代码的备用选项 . 每小时设置Heroku调度程序,并对date命令进行比较:
我已经使用此代码模仿当地时区的cron:
这不是理想的,但我已经开始添加一个RUN_IF环境变量来执行通过heroku运行的任务:scheduler,它允许我每周和每月安排工作 .
如果在没有RUN_IF变量的情况下运行rake任务,它将运行 . 否则,除非RUN_IF的值变为假值,否则作业将被中止 .
与上面的其他想法类似,但我更喜欢将调度细节移出应用程序代码 .
正如讨论over here,并使用Rob的上述逻辑,这里是按星期几,每月一次和特定日期细分的bash脚本 .
每周一运行一个任务:
每月第一天运行一个任务:
你也可以在12月24日每年都找一份工作:
如果你不想或不能用Rake做这个,另一个选择是用bash从Ruby做到这一点:
这甚至适用于非ruby项目(在我的例子中:Clojure) .