这是我第一次安排任务,我不确定最佳实施(或正确的实施)。
我的目标: 我在带有twilio的rails 4应用程序设置上有一个红宝石并部署在Heroku上。我希望应用程序每周一次使用自定义文本消息(由数据库中的信息编写和创建)自动为所有用户发送文本。
从研究中我得到了以下宝石:Whenever和Rufus-Scheduler。
我相信这两颗宝石都可以完成工作,但是阅读Rufus' docs"请注意:rufus-scheduler不是cron替代品"我试图理解我想要的确是一个cron工作还是一个" Rufus-Scheduler"。
我留下了以下问题:什么是cron作业,何时适合使用它?为什么Rufus-Scheduler不是cron替代品,它有什么不同的做法?我应该使用哪一个?
答案 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插件即可。
答案 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应用程序中找不到类,但可能只是一个怪癖)时,另一方面发条工作了对我来说。