【问题标题】:Cron tasks in Ruby on RailsRuby on Rails 中的 Cron 任务
【发布时间】:2018-08-01 20:53:23
【问题描述】:

我是 Ruby on Rails 的新手,我想执行一些定期任务,但我发现我不知道如何在 RoR 中设置任何 cron 任务。是否有任何基本教程如何在 RoR 中设置 cron?目前我正在 Webbrick 上使用 Windows 平台上的 Mysql DB 运行 RoR。

【问题讨论】:

    标签: ruby-on-rails cron


    【解决方案1】:

    有几种方法可以解决您的问题。

    1. 如果你想使用 Cron,在 Rails 中使用它的最佳方式是使用 gem whenever。要了解更多关于何时以及如何使用它的快速教程,请查看Railscast Episode 164。 Cron 最适合您需要在每个固定时间间隔运行的操作(例如清空用户的垃圾箱)

    2. 您也可以使用DelayedJob,这最适合您的某些操作持续很长时间并且您不希望用户等到他们的操作完成(例如,当您发送大量电子邮件时)或当你想在 X 小时内采取一些行动时。有关 DelayedJob 的更多信息,您可以在此处找到:https://github.com/collectiveidea/delayed_job

    3. 您还可以使用 Redis 进行 Resque:https://github.com/blog/542-introducing-resque

    【讨论】:

    • 感谢回复。是否有可能在 Windows 上有类似 cron 的东西?因为我在 Windows 上运行 Webrick 并且没有 crontab。
    • 我不是 Windows 用户,因此无法确定回复,但您可以在此处获取一些信息:stackoverflow.com/questions/6784149/…
    【解决方案2】:

    【讨论】:

      【解决方案3】:

      您可以创建一个守护程序脚本,该脚本始终在内存中。
      例如https://github.com/DAddYE/foreverb

      【讨论】:

        【解决方案4】:

        为了在“核心”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
        

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

        【讨论】:

          猜你喜欢
          • 2011-03-04
          • 2011-02-09
          • 1970-01-01
          • 1970-01-01
          • 2011-06-04
          • 2013-06-14
          • 1970-01-01
          • 2011-12-03
          • 1970-01-01
          相关资源
          最近更新 更多