Forum: Ruby on Rails Why does ActiveSupport::Notifications::Instrumenter make payload[:exception] an array?

Posted by Brendan G. (brendan_g)
on 2013-01-03 09:14
(Received via mailing list)
Hi,

This is probably a stupid question, but I'm wondering if anyone knows 
why

https://github.com/rails/rails/blob/master/actives...

doesn't just save the actual exception in the payload when an exception
occurs. Instead it does this:

        *rescue Exception => e*
*          payload[:exception] = [e.class.name, e.message]*
*          raise e*
*
*
*
*

Thanks
Posted by tamouse mailing lists (Guest)
on 2013-01-04 04:43
(Received via mailing list)
On Wed, Jan 2, 2013 at 12:34 PM, bjg <brendan.grainger@gmail.com> wrote:
> This is probably a stupid question, but I'm wondering if anyone knows why
>
> 
https://github.com/rails/rails/blob/master/actives...
>
> doesn't just save the actual exception in the payload when an exception
> occurs. Instead it does this:
>
>         rescue Exception => e
>           payload[:exception] = [e.class.name, e.message]
>           raise e

Those are the only things it needs to make a notification, what type
of exception it was, and the associated error message.
Posted by Brendan G. (brendan_g)
on 2013-01-04 14:36
(Received via mailing list)
But I can subscribe to a notification and get access to the 'exception' 
in
the payload like so:

ActiveSupport::Notifications.subscribe 
"process_action.action_controller"
do |name, start, finish, id, payload|
  exception = payload[:exception]

  # If the entire exception were in the payload or at least something
containing
  # the stacktrace I could log it, send an email etc.
end

I realize it's probably the way it is because we want the payload to be
easily serializable so that if we want to push the event to redis or
something that can be easily done, but might be nice if the stacktrace 
were
available too.


On Thursday, January 3, 2013 10:41:55 PM UTC-5, tamouse wrote:

On Wed, Jan 2, 2013 at 12:34 PM, bjg <brendan....@gmail.com 
<javascript:>>
Please log in before posting. Registration is free and takes only a minute.
Existing account (Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
No account? Register here.