lib/good_job/job.rb in good_job-1.2.5 vs lib/good_job/job.rb in good_job-1.2.6
- old
+ new
@@ -187,40 +187,34 @@
GoodJob::CurrentExecution.reset
self.performed_at = Time.current
save! if GoodJob.preserve_job_records
- result, rescued_error = execute
+ result, unhandled_error = execute
- retry_or_discard_error = GoodJob::CurrentExecution.error_on_retry ||
- GoodJob::CurrentExecution.error_on_discard
-
- error = nil
- if rescued_error
- error = rescued_error
- elsif result.is_a?(Exception)
- error = result
+ result_error = nil
+ if result.is_a?(Exception)
+ result_error = result
result = nil
- elsif retry_or_discard_error
- error = retry_or_discard_error
end
- error_message = "#{error.class}: #{error.message}" if error
- self.error = error_message
+ job_error = unhandled_error ||
+ result_error ||
+ GoodJob::CurrentExecution.error_on_retry ||
+ GoodJob::CurrentExecution.error_on_discard
- if rescued_error && GoodJob.reperform_jobs_on_standard_error
+ self.error = "#{job_error.class}: #{job_error.message}" if job_error
+
+ if unhandled_error && GoodJob.reperform_jobs_on_standard_error
save!
- else
+ elsif GoodJob.preserve_job_records == true || (unhandled_error && GoodJob.preserve_job_records == :on_unhandled_error)
self.finished_at = Time.current
-
- if GoodJob.preserve_job_records
- save!
- else
- destroy!
- end
+ save!
+ else
+ destroy!
end
- [result, error]
+ [result, job_error]
end
private
def execute