Rails - Whenever gem - Dynamic values

后端 未结 4 1808
Happy的楠姐
Happy的楠姐 2020-12-05 21:08

Lets say I have a cronjob like this:

every 1.day, :at => \'4:30 am\' do  
  runner \"MyModel.task_to_run_at_four_thirty_in_the_morning\"  
end  
         


        
4条回答
  •  醉话见心
    2020-12-05 21:39

    Thank you idlefingers! It totally worked. Here's my solution:

    require "#{RAILS_ROOT}/config/environment.rb"
    
    @notification_daily = Constant.find_by_key("notification_daily_time_span")
    every eval(@notification_daily.value), :at => @notification_daily.additional_data do
      runner "Notification.daily"
    end
    
    @notification_weekly = Constant.find_by_key("notification_weekly_time_span")
    every eval(@notification_weekly.value), :at => @notification_weekly.additional_data do
      runner "Notification.weekly"
    end
    

    .value can contain for example: 1.day or :sunday
    .additional_data contains the timestamp, example: 11:00am

    And yes, I'm aware that I need to run --update crontab again :)
    But I'll let a cronjob update itself, hehe.

提交回复
热议问题