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

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

【问题讨论】:

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

标签: ruby-on-rails


【解决方案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 更新。
        • 谢谢老兄!我没有注意到这一点。非常感谢您的支持!
        猜你喜欢
        • 2014-01-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-05-04
        • 2011-11-13
        • 1970-01-01
        • 2013-05-01
        相关资源
        最近更新 更多