Fix Active Job log message to correctly report a job failed to enqueue when the adapter raises an ActiveJob::EnqueueError

This commit is contained in:
Ben Sheldon 2023-04-04 18:05:16 -07:00 committed by Ben Sheldon [he/him]
parent fea9ad3337
commit b1b7debaa3
No known key found for this signature in database
GPG Key ID: 862102672FFD9973
3 changed files with 21 additions and 2 deletions

@ -1,3 +1,8 @@
* Fix Active Job log message to correctly report a job failed to enqueue
when the adapter raises an `ActiveJob::EnqueueError`.
*Ben Sheldon*
* Add `after_discard` method.
This method lets job authors define a block which will be run when a job is about to be discarded. For example:

@ -8,7 +8,7 @@ class LogSubscriber < ActiveSupport::LogSubscriber # :nodoc:
def enqueue(event)
job = event.payload[:job]
ex = event.payload[:exception_object]
ex = event.payload[:exception_object] || job.enqueue_error
if ex
error do
@ -28,7 +28,7 @@ def enqueue(event)
def enqueue_at(event)
job = event.payload[:job]
ex = event.payload[:exception_object]
ex = event.payload[:exception_object] || job.enqueue_error
if ex
error do

@ -245,6 +245,20 @@ def test_enqueue_in_job_logging
skip
end
def test_enqueue_log_when_enqueue_error_is_set
EnqueueErrorJob.disable_test_adapter
EnqueueErrorJob.perform_later
assert_match(/Failed enqueuing EnqueueErrorJob to EnqueueError\(default\): ActiveJob::EnqueueError \(There was an error enqueuing the job\)/, @logger.messages)
end
def test_enqueue_at_log_when_enqueue_error_is_set
EnqueueErrorJob.disable_test_adapter
EnqueueErrorJob.set(wait: 1.hour).perform_later
assert_match(/Failed enqueuing EnqueueErrorJob to EnqueueError\(default\): ActiveJob::EnqueueError \(There was an error enqueuing the job\)/, @logger.messages)
end
def test_for_tagged_logger_support_is_consistent
set_logger ::Logger.new(nil)
OverriddenLoggingJob.perform_later "Dummy"