#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. Спасибо за ваш ответ, я постараюсь