Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails RubyonRails计划任务_Ruby On Rails_Cron_Whenever_Rufus Scheduler - Fatal编程技术网

Ruby on rails RubyonRails计划任务

Ruby on rails RubyonRails计划任务,ruby-on-rails,cron,whenever,rufus-scheduler,Ruby On Rails,Cron,Whenever,Rufus Scheduler,这是我第一次安排任务,我不确定最好的实现(或正确的实现) 我的目标: 我用twilio安装了RubyonRails4应用程序,并部署在Heroku上。我希望该应用程序每周自动向我的所有用户发送一条自定义短信(由数据库中的信息编写和创建) 通过研究,我总结出以下几点:和 我相信这两个宝石都可以完成任务,但在阅读Rufus的文档时:“请注意:Rufus scheduler不是cron的替代品”,我一直在试图理解我想要的是cron作业还是“Rufus scheduler” 我还有以下问题:什么是cro

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

我的目标: 我用twilio安装了RubyonRails4应用程序,并部署在Heroku上。我希望该应用程序每周自动向我的所有用户发送一条自定义短信(由数据库中的信息编写和创建)

通过研究,我总结出以下几点:和

我相信这两个宝石都可以完成任务,但在阅读Rufus的文档时:“请注意:Rufus scheduler不是cron的替代品”,我一直在试图理解我想要的是cron作业还是“Rufus scheduler”


我还有以下问题:什么是cron作业,什么时候使用它合适?为什么Rufus Scheduler不是cron的替代品,它有什么不同之处?我应该使用哪一个?

关于Cron:

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

用于在Heroku上安排任务

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


有关更多信息,请参阅:

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

Rufus调度程序不同于cron,因为它在Ruby进程内部运行


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

只要
允许您编写ruby代码,并在crontab文件中进行转换,该文件指定了一组命令和每个命令的频率。此文件由使用

rufus scheduler
是纯ruby,您编写ruby,作业在ruby中运行,例如在应用程序循环中调用
scheduler.join
,或者在另一个线程中调用
ruby您的/rufus\u scheduler\u script.rb

在我看来,它们做的事情是一样的,使用cron时,您使用的是linux命令,但我看不到任何其他区别

根据我的经验,我在rufus scheduler上遇到过问题,无论何时(他们没有在我的Rails应用程序中找到类,但可能只是一个怪癖),在另一边,时钟系统都为我工作

rufus scheduler不是cron的替代品

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

Rufus scheduler理解Cron的“***”语法。这导致一些人说“rufus scheduler试图成为Cron的替代品”。它可以更好地表述为“一些人滥用了rufus调度器,而不是认为(知道)老忠实的Cron在这种情况下会更好”

要成为一名优秀的开发人员,您应该认真考虑一些*nix系统管理技能,否则您将很难与之合作。它可以像“在系统中的VirtualBox中安装、运行和管理linux机箱”一样简单

rufus调度程序在Ruby进程中运行。在一个普通的世界中,在服务http请求(Rails或Sinatra web应用程序)的同一个Ruby进程中运行rufus调度程序,而且,哦,糟糕,当应用程序不运行时,调度不会运行

Cron是由*nix操作系统提供的服务。主机上的其他应用程序和服务都依赖于它。Cron读取其crontab并在给定时间运行其中指示的脚本。由于出色的where,Cron可以被告知在Rails应用程序中运行脚本


这可能也会让您感兴趣:

是的,heroku调度程序看起来确实是一个不错的选择,当我不断阅读它的文档“调度程序有一个已知的问题,有时会跳过计划的进程”时,我对它有点反感我相信,如果Heroku任务调度器实际上允许每周调度一次任务,而不是每天调度一次任务,那么这将是正确的答案。stecd:没有什么可以阻止您每天触发一个计划,但这只会在周日起作用<代码>如果日期!=然后不执行任何操作并返回。