Ruby on rails计划任务

时间:2014-04-30 02:57:49

标签: ruby-on-rails cron whenever rufus-scheduler

这是我第一次安排任务,我不确定最佳实施(或正确的实施)。

我的目标: 我在带有twilio的rails 4应用程序设置上有一个红宝石并部署在Heroku上。我希望应用程序每周一次使用自定义文本消息(由数据库中的信息编写和创建)自动为所有用户发送文本。

从研究中我得到了以下宝石:WheneverRufus-Scheduler

我相信这两颗宝石都可以完成工作,但是阅读Rufus' docs"请注意:rufus-scheduler不是cron替代品"我试图理解我想要的确是一个cron工作还是一个" Rufus-Scheduler"。

我留下了以下问题:什么是cron作业,何时适合使用它?为什么Rufus-Scheduler不是cron替代品,它有什么不同的做法?我应该使用哪一个?

4 个答案:

答案 0 :(得分:2)

  

rufus-scheduler不是cron替代者

可以扩展为" rufus-scheduler从未被写为cron"的替代品。更重要的信息是"您是开发人员,作为开发人员,您应该了解您继承的环境及其附带的工具。您应该知道何时使用它们,何时模仿它们,何时更换它们。"

Rufus-scheduler理解" * * * * *" Cron的语法。这导致一些人说" rufus-scheduler试图成为Cron的替代品#34;。它可以更好地表达为"有些人滥用rufus-scheduler而不是思考(知道)老忠实的Cron在那种情况下会更好"。

要成为一名优秀的开发人员,你应该认真考虑一些* nix系统管理员的技能,否则你会感到痛苦。它可以像在系统中的VirtualBox中安装,运行和管理Linux盒一样简单。

rufus-scheduler计划在Ruby进程中运行。在一个普通的世界中,一个在同一个Ruby进程中运行rufus-scheduler来处理http请求(Rails或Sinatra Web应用程序),哦,oops,当应用程序不运行时,时间表不会运行

Cron是您的* nix操作系统提供的服务。主机上的其他应用程序和服务依赖于它。 Cron读取其crontab并在给定时间运行其中指示的脚本。感谢优秀的Whenever,可以告诉Cron在Rails应用程序中运行脚本。

您可能也会对此感兴趣:https://devcenter.heroku.com/articles/clock-processes-ruby

答案 1 :(得分:1)

关于Cron:

Cron是在 nix系统上执行计划任务的程序的名称。什么是计划任务在Windows中,Cron在概念层面为Linux做类似的事情.Cron是Linux或UNIX中最有用的工具之一,如操作系统。 cron服务(守护程序)在后台运行并不断检查/ etc / crontab文件和/etc/cron./目录。它还检查/ var / spool / cron /目录。

用于在Heroku上安排任务

好消息是,在Heroku上有一个名为Scheduler的东西,它是一个附加组件,用于按预定的时间间隔在您的应用程序上运行作业,就像传统服务器环境中的cron一样。所以,你真的不需要像任何时候那样用cron或者宝石来玩弄/玩家。只需在Heroku上使用Scheduler插件即可。

有关详细信息,请参阅:https://devcenter.heroku.com/articles/scheduler

答案 2 :(得分:1)

cron作业是使用cron软件在自动时间表上运行的程序。

Rufus-Scheduler与cron不同,因为它在Ruby进程内部运行。

对于你所描述的内容,我相信两者都可以。

答案 3 :(得分:0)

whenever允许您编写将在crontab文件中转换的ruby代码,该文件是指定一组命令和每个命令的频率的文件。此文件由cron使用。

rufus-scheduler是纯粹的ruby,你写ruby并且作业在ruby中运行,例如在你的应用程序循环中调用scheduler.join,或者在调用ruby your/rufus_scheduler_script.rb的另一个线程中。

在我看来,他们做同样的事情,使用cron你正在使用linux命令,但我没有看到任何其他区别。

other options too,根据我的经验,我遇到了rufus-scheduler的问题,而且每当(他们在我的Rails应用程序中找不到类,但可能只是一个怪癖)时,另一方面发条工作了对我来说。