Как передать динамическое значение в файле schedule.rb (Ruby on rails)

#ruby-on-rails #ruby #cron #whenever

#ruby-on-rails #ruby #cron #всякий раз, когда

Вопрос:

как я могу передать динамическое значение в регулярном выражении

 new_date_value = query_value
# minute(0-59), hours(0-23), day of month(1-31), month of year(1-12), day of week(0-6) 0=sunday

every '0 4 #{new_date_value} * *' do
   rake "db:get_free_tag_latest_post_batch", :environment => "production"
end
 

Ответ №1:

чтобы избежать подобных вещей, я обычно проверяю дату в задаче. Например, у меня есть задача, которая должна выполняться каждый последний день месяца. Я не могу использовать 30 или 31 в день, потому что февраль. например, имеет 28 дней.

Вот как я настроил задачу

 # Apply interest accrued for all loans
# every day at: '22:00'
trigger_interest_accrued_application:
  cron: "0 22 * * *"
  class: "Jobs::TriggerInterestAccruedApplication"
  queue: admin
 

и в определении задачи

 class TriggerInterestAccruedApplication < ::ApplicationJob
  queue_as :admin

  def perform
    return unless Date.current.end_of_month.today?
    
    perform_task
  end
end
 

как вы думаете, что-то подобное сработает для вас? ИМО, это лучше, потому что теперь то, что вы хотите сделать, это поместить некоторую логику в файл планировщика, и это, вероятно, может укусить вас позже

Комментарии:

1. Спасибо за ваш ответ, я постараюсь