This should have been fixed in this commit:
http://github.com/thoughtbot/hoptoad_notifier/commit/da5bc5a09f0d887e114e2d3aa86268330e05e513

Thanks,
Dan

On Mon, Apr 13, 2009 at 3:47 AM, Ryan Tomayko <r...@heroku.com> wrote:

>
> On Sun, Apr 12, 2009 at 8:44 PM, shenry <stuarthe...@gmail.com> wrote:
> >
> > I have this same problem, Hoptoad will correctly send a message after
> > "heroku rake hoptoad:test" but if I create an exception manually I get
> > nothing....
> >
> > Hoptoad Success: Net::HTTPOK
> > Rendering /disk1/home/slugs/2185_8e050c1_3bb1/mnt/public/500.html (500
> > Internal Server Error)
> >
> > Any ideas?
>
> There's an open bug in the hoptoad plugin. Full detail below but the
> quick workaround is to add "async." to the "environment_filters" in
> config/initializers/hoptoad.rb as follows:
>
>    HoptoadNotifier.configure do |config|
>      config.api_key = 'YOUR KEY'
>      config.environment_filters << 'async.'
>    end
>
> This causes the notifier to remove any matching keys before building
> the YAML payload to send to hoptoad.
>
> Here's my original write up on the issue. I'm under the impression
> that the thoughtbot folks are aware of this. Maybe someone on the list
> can bring it to the right person's attention:
>
> This issue occurs when there are complex objects in the request
> environment. The hoptoad plugin builds a POST body to send to the
> hoptoad server by converting the session, environment, request,
> backtrace, and error_message into YAML. Heroku loads a special version
> of Thin that places two special variables in the environment:
> "async.callback" and "async.close". These are both Proc/Method objects
> but could theoretically be any object not directly serializeable to
> YAML. When these objects are converted to YAML, they look like this:
> async.callback: !ruby/object:Method {}
>
> I assume some kind of deserialization exception is occurring on the
> hoptoad server when an attempt is made to parse the YAML. The right
> fix is probably to adjust the following code in the hoptoad plugin:
>
> def clean_non_serializable_data(notice) #:nodoc:
>  notice.select{|k,v| serializable?(v) }.inject({}) do |h, pair|
>    h[pair.first] = pair.last.is_a?(Hash) ?
> clean_non_serializable_data(pair.last) : pair.last
>    h
>  end
> end
>
> def serializable?(value) #:nodoc:
>  !(value.is_a?(Module) || value.kind_of?(IO))
> end
>
> The serializable? check should probably be a whitelist of allowed
> value types instead of a blacklist of disallowed value types. Adding
> Method/Proc to the current list of disallowed types would also solve
> this issue but it will happen again with some other object. It's
> becoming a very common pattern in Rack to add various types of objects
> to the environment.
>
> Thanks,
> Ryan
>
> >
>


-- 
Dan Croak
http://thoughtbot.com

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Heroku" group.
To post to this group, send email to heroku@googlegroups.com
To unsubscribe from this group, send email to 
heroku+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/heroku?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to