我已经定义了一个耙任务,该任务将在每月的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
您可以将任务包装在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