【问题标题】:Ruby on Rails 3.1 - How to populate crontab / cronjob dynamically on a daily basisRuby on Rails 3.1 - 如何每天动态填充 crontab / cronjob
【发布时间】:2015-06-29 18:32:40
【问题描述】:

我有一个每天从第三方下载一些数据的 ruby​​ 任务。 根据这个下载的数据,我想更新 crontab。

例如,每天早上 9 点,我想确定当天的计划任务列表。

今天上午 9 点 - 我知道“TASK A”需要在下午 1 点和下午 2 点运行。所以,我需要为下午 1 点和下午 2 点插入 crontab。

明天上午 9 点 - 我知道“TASK A”需要在下午 4 点运行。所以,我需要为下午 4 点插入 crontab。

我怎样才能做到这一点?有什么推荐的宝石吗?

【问题讨论】:

    标签: ruby-on-rails ruby dynamic background cron


    【解决方案1】:

    我认为您需要查看whengem,并在初始化程序文件中编写一个schedule.rb(它是whenever 配置文件)。之后使用when命令更新crontab。

    https://github.com/javan/whenever

    http://railscasts.com/episodes/164-cron-in-ruby

    【讨论】:

    • 我还打算推荐whenever gem,但此外,我还建议@user1000589 重组他/她生成任务的方式(或者.. 进一步了解)。根据所提供的信息,用于确定哪些任务运行的算法仍不清楚......
    • 基本上,我每天下载一次电视节目表。每当我得到一个新的时间表时,我都想为我下载的节目时间启动记录器。
    • 所以,我的 cronjob 需要有一个显示开始时间的条目。任务是启动记录器(主要是 rake 任务)。
    • 我还没有尝试过,但是前几天我问了一个类似的问题,建议尝试CronEdit
    【解决方案2】:
    Using Whenever gem
    # In rails 4
    require File.expand_path('../..//config/environment.rb', __FILE__)
    
    # This is your table by which you will get your new value 
    bid_update = DynamicOfferTime.first
    
    # Now Task As
    every (bid_update.hour_value).hours do
      puts "This will repeat in every #{bid_update.hour_value} hour"
    end
    

    【讨论】:

      猜你喜欢
      • 2018-12-06
      • 2013-08-04
      • 1970-01-01
      • 1970-01-01
      • 2015-11-08
      • 1970-01-01
      • 1970-01-01
      • 2015-11-08
      • 2011-03-15
      相关资源
      最近更新 更多