Ruby on Rails Cron作业示例

时间:2013-06-18 08:56:52

标签: ruby-on-rails

您对rails平台非常陌生,并且正在寻找rails cron作业调度教程。我已经完成了教程使用的时间和其他调度宝石,但是我正在寻找使用rails上的cron选项卡的核心ruby实现。提前谢谢

6 个答案:

答案 0 :(得分:2)

Railscasts使用Cron时有decent tutorial

修改

如果您想了解如何从头开始实施它的示例,您可以查看每次Gem的实施方式here

答案 1 :(得分:2)

要设置cron作业,您可以依赖名为WHENEVER

的简单gem的帮助

它很容易实现。去吧。

答案 2 :(得分:1)

许多人反对这种方法(请参阅this SO thread),但使用cron作业中的curl / wget触发应用程序的操作可能是定期任务的快速简便的解决方案。

你必须记住一些事情:

  • 将您的操作的执行时间保持在较低水平(因为它会阻止您的应用程序,就像常规Web请求一样)
  • 确保您不允许任何人触发操作(使用IP限制,秘密令牌或其他安全措施)

有关此主题的更多信息,我已写过an article

答案 3 :(得分:1)

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

无需安装任何东西(宝石除外)或在轨道外设置任何东西。

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

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

答案 4 :(得分:0)

您还可以使用外部免费服务外包cronjobs http://guardiano.getpeople.in

免责声明:我做到了

答案 5 :(得分:0)

我正在使用rufus-scheduler,它使用线程来执行预定的功能。配置非常简单。只需3个步骤:

1-添加宝石gem 'rufus-scheduler', '~> 3.6'

2-创建文件config/initializers/scheduler.rb

3-scheduler.rb中的编程时间表:

require 'rufus-scheduler'
s = Rufus::Scheduler.singleton
s.every '5s' do
    #do every 5 seconds exec this code
    puts "WOWWWWWWWWWWWWWWWWWWWW"
end

scheduler.in '2d' do
  # every 2 days exec this
  puts "Now it's me"
end

更多疑问:https://github.com/jmettraux/rufus-scheduler