Re: [Rails] Why does ActiveSupport::Notifications::Instrumenter make payload[:exception] an array?

86 views
Skip to first unread message

tamouse mailing lists

unread,
Jan 3, 2013, 10:41:55 PM1/3/13
to rubyonra...@googlegroups.com
On Wed, Jan 2, 2013 at 12:34 PM, bjg <brendan....@gmail.com> wrote:
> This is probably a stupid question, but I'm wondering if anyone knows why
>
> https://github.com/rails/rails/blob/master/activesupport/lib/active_support/notifications/instrumenter.rb
>
> 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.

bjg

unread,
Jan 4, 2013, 8:34:44 AM1/4/13
to rubyonra...@googlegroups.com
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.
Reply all
Reply to author
Forward
0 new messages