mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-01-24 20:36:49 +00:00
Rescue errors in report generation
So we can report them to Bugsnag and the job isn't marked as failed and therefore won't repeat.
This commit is contained in:
@@ -21,6 +21,12 @@ class ReportJob < ApplicationJob
|
||||
email_result(user, blob) if execution_time > NOTIFICATION_TIME
|
||||
|
||||
broadcast_result(channel, format, blob) if channel
|
||||
rescue StandardError => e
|
||||
Bugsnag.notify(e) do |payload|
|
||||
payload.add_metadata :report, {
|
||||
report_class:, user:, params:, format:
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
def email_result(user, blob)
|
||||
|
||||
@@ -64,6 +64,17 @@ describe ReportJob do
|
||||
}.to_not enqueue_mail
|
||||
end
|
||||
|
||||
it "rescues errors" do
|
||||
expect(report_class).to receive(:new).and_raise
|
||||
expect(Bugsnag).to receive(:notify)
|
||||
|
||||
job = ReportJob.perform_later(**report_args)
|
||||
|
||||
expect {
|
||||
perform_enqueued_jobs(only: ReportJob)
|
||||
}.to_not raise_error
|
||||
end
|
||||
|
||||
def expect_csv_report
|
||||
blob.reload
|
||||
expect(blob.filename.to_s).to eq "report.csv"
|
||||
|
||||
Reference in New Issue
Block a user