Я определил работу почтовой программы, используя sidekiq, как показано ниже. Проблема, с которой я здесь сталкиваюсь, заключается в том, что я определил VisitReminderWorker.perform_asyn c (cost_ids) как asyn c задание, из-за которого я не получаю сообщение об ошибке из файла worker.rb. То, что я хочу, если в рабочем файле есть ошибка, он возвращает ошибку в файл rake в методе восстановления. Любая идея, где я иду не так.
office.rake
namespace :office do
desc "send payment reminder emails"
task send_payment_reminder: :environment do
VisitReminderRun.create(status: :processing)
reminder_run = VisitReminderRun.last
visit_reminder_job_status = true
Office.all.each do |office|
expense_ids = []
office.issues.where("issues.amount > 0").each do |issue|
expense = issue.expenses.order(:date, :id).last
expense_ids << expense.id if expense.date < VisitReminderRun.last.created_at
end
begin
VisitReminderWorker.perform_async(expense_ids)
rescue StandardError => e
visit_reminder_job_status = false
end
end
if visit_reminder_job_status == false
reminder_run.update(status: :failed)
else
reminder_run.update(status: :successful)
end
end
end
visit_reminder_worker.rb
class VisitReminderWorker
include Sidekiq::Worker
def perform(expense_ids)
begin
VisitReminderMailer.visit_reminder_letter(expense_ids).deliver_now
rescue StandardError => e
return e
end
end
end