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