Как запустить задачу rake, используя when в Rails

Я пишу Rake-задачу. Я хочу запускать его каждое последнее воскресенье каждого месяца в 23:00.

Как я могу запланировать это с помощью драгоценного камня Whenever в Ruby on Rails?

Моя задача rake находится в следующем месте: app/lib/tasks/my_task.rake

task :create_entries => :environment do
  puts "Hello"
end 

person John    schedule 25.09.2015    source источник


Ответы (1)


Я не думаю, что есть правило для «последнего x дня месяца», но вы всегда можете поместить дополнительный тест if внутри блока:

every :sunday, :at => '11pm' do 
  #if the month is different a week from now, we must be in the last 
  #sunday of the month
  if Time.now.month != 1.week.from_now.month
    rake "my:rake:task"
  end
end

Таким образом, этот запланированный код будет запускаться каждое воскресенье, но он будет вызывать задачу rake только в том случае, если время соответствует дальнейшим условиям.

person Max Williams    schedule 25.09.2015