Ruby on Rails中的Cron任务

时间:2011-11-07 19:16:02

标签: ruby-on-rails cron

我是Ruby on Rails的新手,我想执行一些定期任务,但我发现我不知道如何在RoR中设置任何cron任务。是否有任何基本教程如何在RoR中设置cron?目前我在Windows平台上使用Mysql DB在Webbrick上运行RoR。

4 个答案:

答案 0 :(得分:4)

解决问题的方法很少。

  1. 如果你想使用Cron,在Rails中使用它的最好方法是使用gem whenever。要了解有关何处的更多信息以及有关如何使用它的快速教程,请查看此Railscast Episode 164。当您需要每隔一段时间间隔运行一次操作时(例如清空用户的垃圾箱),Cron最适合

  2. 您还可以使用DelayedJob最适合您有一些持续很长时间的操作并且您不希望用户等到他们的操作完成时(例如,当您发送大量电子邮件时) )或者当你想在X小时内采取一些行动。有关DelayedJob的更多信息,请访问:https://github.com/collectiveidea/delayed_job

  3. 您还可以使用Redis进行Resque:https://github.com/blog/542-introducing-resque

答案 1 :(得分:2)

答案 2 :(得分:1)

您可以创建一个始终位于内存中的守护程序脚本 例如,https://github.com/DAddYE/foreverb

答案 3 :(得分:0)

为了在“核心” rails / ruby​​中最小化“ cron式”任务的设置,我创建了https://github.com/Ebbe/arask

无需安装任何东西(gem除外)或在滑轨之外进行设置。

gem 'arask'添加到您的Gemfile中,运行bundle installrails generate arask:installrails db:migrate

现在,您可以在文件config / initializers / arask.rb中设置任务:

arask.create task: 'send:logs', cron: '0 2 * * *' # At 02:00 every day
arask.create script: 'puts "IM ALIVE!"', interval: :daily
arask.create task: 'my:awesome_task', interval: :hourly
arask.create task: 'my:other_awesome_task', interval: 2.hours

如果服务器正在运行,任务将自动运行。