如果任务发生在星期天,则将任务重新安排到第二天的红宝石

问题描述 投票:0回答:1

我已经定义了一个耙任务,该任务将在每月的2号和17号运行。但是,如果周日2号和17号降临,我不希望执行此任务。在这种情况下,任务应在第二天运行。任何人都知道如何实现的想法?

#run this task at 8am on 17th of every month
every '0 8 17 * *' do
  rake 'money:reminder', environment: ENV['RAILS_ENV']
end


#run this task at 8am on the 2nd day of every month
every '0 8 2 * *' do
  rake 'money:reminder', environment: ENV['RAILS_ENV']
end
ruby-on-rails ruby rake
1个回答
0
投票

您可以将任务包装在ActiveJob中,并排队等待以后运行:

# Enqueue a job to be performed tomorrow at noon.
GuestsCleanupJob.set(wait_until: Date.tomorrow.noon).perform_later(guest)

(来源:railsguide

根据您的情况,在工作日有条件:

# your_class.rb
def self.reminder
  if Time.current.sunday?
    YourJob.set(wait_until: Date.tomorrow.noon).perform_later
  else
    YourJob.perform_later
  end
end

# schedule.rb
#run this task at 8am on 17th of every month
every '0 8 17 * *' do
  bundle exec rails runner 'YourModel.reminder'
end


#run this task at 8am on the 2nd day of every month
every '0 8 2 * *' do
  bundle exec rails runner 'YourModel.reminder'
end
© www.soinside.com 2019 - 2024. All rights reserved.