Ruby on Rails Cron 作业示例

Posted

技术标签:

【中文标题】Ruby on Rails Cron 作业示例【英文标题】:Ruby on Rails Cron Job Example 【发布时间】:2013-06-14 09:59:20 【问题描述】:

您好,您对 rails 平台很陌生,并且正在寻找 rails cron 作业调度教程。我已经完成了使用任何时间和其他调度 gem 的教程,但是我正在寻找一个核心 ruby​​ 实现,它带有 rails 上的 cron 选项卡。提前谢谢你

【问题讨论】:

cron 是 cron,与 rails 无关。 嘿,您可以在 rails 应用程序中安排 cron 作业。使用“无论何时”宝石。它是一个简单而好的宝石。看我的回答。它可能会帮助你。我在我的应用程序中使用了相同的 gem。 @xdazz 是 cron 是 cron 问题被要求在 ruby​​ 中实现 【参考方案1】:

Railscasts 有一个 decent tutorial 使用 Cron。

编辑

如果您想了解它是如何从头开始实现的,您可以查看Whenever Gem 是如何实现的here

【讨论】:

嗨,我想从头开始学习。谢谢 好吧,我想您可以查看 When gem 的源代码 (github.com/javan/whenever),这可能会给您一个很好的起点,因为它正在从头开始做您想做的事情。 .. 没问题,我已经编辑了答案以更好地反映原始问题是什么【参考方案2】:

要设置 cron 作业,您可以借助名为 WHENEVER 的简单 gem 的帮助

它很容易实现。去吧。

【讨论】:

您好,我想通过艰苦的方式学习它,而无需任何时候。谢谢【参考方案3】:

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

免责声明:我做到了

【讨论】:

【参考方案4】:

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

你只需要记住几件事:

尽量缩短操作的执行时间(因为它会阻止您的应用程序,就像常规 Web 请求一样) 确保您不允许任何人触发操作(通过使用 IP 限制、秘密令牌或其他安全措施)

关于这个话题的更多信息,我已经写了an article关于它。

【讨论】:

【参考方案5】:

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

无需安装任何东西(除了 gem)或在 rails 之外设置任何东西。

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

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

【讨论】:

【参考方案6】:

我正在使用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

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

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

【讨论】:

很好的解决方案。只有一个注释,scheduler 应该在第 8 行用s 更新。 谢谢老兄!我没有注意到这一点。非常感谢您的支持!

以上是关于Ruby on Rails Cron 作业示例的主要内容,如果未能解决你的问题,请参考以下文章

禁用 ruby​​ on rails 作业进行测试

Ruby on Rails:延迟的作业无法使用邮件程序并给出路由错误

cron作业中的Rails类方法在弹性beantalk中不起作用

Shrine Gem Ruby on Rails 无服务器图像处理程序,后台作业

如何在 Ruby on Rails 中完成延迟作业后执行 ajax 回调?

在 Ruby on Rails 应用程序/内存泄漏中分析延迟作业任务