我是Ruby on Rails的新手,我想执行一些定期任务,但我发现我不知道如何在RoR中设置任何cron任务。是否有任何基本教程如何在RoR中设置cron?目前我在Windows平台上使用Mysql DB在Webbrick上运行RoR。
答案 0 :(得分:4)
解决问题的方法很少。
如果你想使用Cron,在Rails中使用它的最好方法是使用gem whenever
。要了解有关何处的更多信息以及有关如何使用它的快速教程,请查看此Railscast Episode 164。当您需要每隔一段时间间隔运行一次操作时(例如清空用户的垃圾箱),Cron最适合
您还可以使用DelayedJob
最适合您有一些持续很长时间的操作并且您不希望用户等到他们的操作完成时(例如,当您发送大量电子邮件时) )或者当你想在X小时内采取一些行动。有关DelayedJob的更多信息,请访问:https://github.com/collectiveidea/delayed_job
您还可以使用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 install
,rails generate arask:install
和rails 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
如果服务器正在运行,任务将自动运行。