Я определил задачу rake, но я не уверен, как я могу выполнить ее в первый и третий понедельник каждого месяца в Ruby. Пожалуйста, помогите мне.
schedule.rb
#run this task on every 1st and 3rd monday of the month
rake 'office:reminder', environment: ENV['RAILS_ENV']
office.rake
namespace :office do
desc "reminder emails"
task reminder: :environment do
PaymentReminderWorker.perform_async(arg1, arg2)
end
end
Пожалуйста, помогите мне разобраться с этим.
Забывая первый понедельник, я думал о чем-то вроде этого.
require 'date'
Date.today.mday <= 7
Обновленный ответ (это хороший подход?)
namespace :office do
desc "reminder emails"
task reminder: :environment do
today_date = DateTime.now
first_monday = Chronic.parse("1st monday of this month", :now => today_date.to_date.beginning_of_month)
third_monday = Chronic.parse("3rd monday of this month", :now => today_date.to_date.beginning_of_month)
if today_date == first_monday || today_date == third_monday
PaymentReminderWorker.perform_async(arg1, arg2)
end
end
end