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 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
如果服务器正在运行,任务将自动运行。
【讨论】:
【参考方案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:延迟的作业无法使用邮件程序并给出路由错误
cron作业中的Rails类方法在弹性beantalk中不起作用
Shrine Gem Ruby on Rails 无服务器图像处理程序,后台作业