diff options
author | Steven Bull <steven@thebulls.us> | 2017-03-27 16:16:50 -0700 |
---|---|---|
committer | Steven Bull <steven@thebulls.us> | 2017-03-27 17:10:24 -0700 |
commit | 452f9ee0bcca071cb520d3d640acebdc91f5e3ef (patch) | |
tree | 462316e2daafcc8560403a78667c7610c636d750 /activesupport | |
parent | 84bfb81a62c142e63569863535f0204669bd006c (diff) | |
download | rails-452f9ee0bcca071cb520d3d640acebdc91f5e3ef.tar.gz rails-452f9ee0bcca071cb520d3d640acebdc91f5e3ef.tar.bz2 rails-452f9ee0bcca071cb520d3d640acebdc91f5e3ef.zip |
Add error logging to Active Job
Active Job logging instrumentation is changed to log errors (with
backtrace) when a job raises an exception in #perform. This improves
debugging during development and test with the default configuration.
Prior to Rails 5, the default development configuration ran jobs with
InlineAdapter, which would raise exceptions to the caller and be
shown in the development log. In Rails 5, the default adapter was
changed to AsyncAdapter, which would silently swallow exceptions
and log a "Performed SomeJob from Async..." info message. This could
be confusing to a developer, as it would seem that the job was
performed successfully.
This patch removes the "Performed..." info message from the log
and adds an error-level "Error performing SomeJob..." log message
which includes the exception backtrace for jobs that raise an
exception within the #perform method. It provides this behavior for
all adapters.
Diffstat (limited to 'activesupport')
-rw-r--r-- | activesupport/lib/active_support/notifications.rb | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/activesupport/lib/active_support/notifications.rb b/activesupport/lib/active_support/notifications.rb index 2df819e554..37dfdc0422 100644 --- a/activesupport/lib/active_support/notifications.rb +++ b/activesupport/lib/active_support/notifications.rb @@ -64,6 +64,8 @@ module ActiveSupport # If an exception happens during that particular instrumentation the payload will # have a key <tt>:exception</tt> with an array of two elements as value: a string with # the name of the exception class, and the exception message. + # The <tt>:exception_object</tt> key of the payload will have the exception + # itself as the value. # # As the previous example depicts, the class <tt>ActiveSupport::Notifications::Event</tt> # is able to take the arguments as they come and provide an object-oriented |