If we delay sending failure notifications then they will fail
because the trace will no longer exist.
As trace imports are running in the background anyway there
doesn't seem to be any good reason to defer the emails.
Fixes #2312
gpx = trace.import
if gpx.actual_points.positive?
gpx = trace.import
if gpx.actual_points.positive?
- Notifier.gpx_success(trace, gpx.actual_points).deliver_later
+ Notifier.gpx_success(trace, gpx.actual_points).deliver
- Notifier.gpx_failure(trace, "0 points parsed ok. Do they all have lat,lng,alt,timestamp?").deliver_later
+ Notifier.gpx_failure(trace, "0 points parsed ok. Do they all have lat,lng,alt,timestamp?").deliver
trace.destroy
end
rescue StandardError => e
logger.info e.to_s
e.backtrace.each { |l| logger.info l }
trace.destroy
end
rescue StandardError => e
logger.info e.to_s
e.backtrace.each { |l| logger.info l }
- Notifier.gpx_failure(trace, e.to_s + "\n" + e.backtrace.join("\n")).deliver_later
+ Notifier.gpx_failure(trace, e.to_s + "\n" + e.backtrace.join("\n")).deliver
end
trace.stub(:import, gpx) do
end
trace.stub(:import, gpx) do
- perform_enqueued_jobs do
- TraceImporterJob.perform_now(trace)
- end
+ TraceImporterJob.perform_now(trace)
- assert_performed_jobs 1
-
email = ActionMailer::Base.deliveries.last
assert_equal trace.user.email, email.to[0]
assert_match(/success/, email.subject)
email = ActionMailer::Base.deliveries.last
assert_equal trace.user.email, email.to[0]
assert_match(/success/, email.subject)
end
trace.stub(:import, gpx) do
end
trace.stub(:import, gpx) do
- perform_enqueued_jobs do
- TraceImporterJob.perform_now(trace)
- end
+ TraceImporterJob.perform_now(trace)
- assert_performed_jobs 1
-
email = ActionMailer::Base.deliveries.last
assert_equal trace.user.email, email.to[0]
assert_match(/failure/, email.subject)
email = ActionMailer::Base.deliveries.last
assert_equal trace.user.email, email.to[0]
assert_match(/failure/, email.subject)
# Check that the user gets a failure notification when something goes badly wrong
trace = create(:trace)
trace.stub(:import, -> { raise }) do
# Check that the user gets a failure notification when something goes badly wrong
trace = create(:trace)
trace.stub(:import, -> { raise }) do
- perform_enqueued_jobs do
- TraceImporterJob.perform_now(trace)
- end
+ TraceImporterJob.perform_now(trace)
- assert_performed_jobs 1
-
email = ActionMailer::Base.deliveries.last
assert_equal trace.user.email, email.to[0]
assert_match(/failure/, email.subject)
email = ActionMailer::Base.deliveries.last
assert_equal trace.user.email, email.to[0]
assert_match(/failure/, email.subject)