Introducing the new 2.x Honeybadger gem
After nearly six months of effort that nearly cost us the sanity of our beloved Joshua Wood, we are proud to officially announce the release of version 2.x of the Honeybadger gem. Upgrade instructions are here.
If you're thinking to yourself, "Wait a second, I saw that last month on github!?" you're not mistaken. The release process for this gem has been so careful and gradual that it's been like watching water boil, or paint dry. And even after the gem was good and released, we held off of doing an official announcement until now. Perhaps we were waiting for the other shoe to fall. For something to go horribly wrong. But strangely, enough it never did.
So what's new?
All new, clean, modern code
Version 1.x of our gem was based on the old MIT licensed Hoptoad gem. Version 2.x has been re-written from the ground up in modern Ruby.
Non-blocking by default
All data is now sent asynchronously. That means that when your users encounter an error, they don't have to wait an extra 250ms for your back end to report the error to us.
Native Sinatra support
Honeybadger now hooks into Sinatra to send errors automagically, just like it does with Rails. You no longer have to write any extra code to add exception handling to Sinatra.
Native Rake support
You can now automatically report errors from your non-rails Rake tasks.
User info is added to errors automatically
If you're running Warden, the authentication system that Devise and other gems are based on, we'll automatically pull in the id of the user who caused the exception. Not only can you fix the error, but you can email the affected users to say "sorry."
Request data everywhere
Request params, cookies and session data are now sent with any exception that happens anywhere in your web app. In version 1.x they were only sent for exceptions that happened inside a controller.
Smaller memory footprint
We spent weeks instrumenting the new gem, counting object allocations and eliminating them whenever possible. As a result, the new gem is using about 25% less RAM in our tests.
New YAML configuration with full ENV support baked in
By making the configuration data-based instead of code-based we've made it much easier to support non-rails platforms such as Sinatra, Sidekiq, Rake tasks, etc. We've also simplified the list of configuration options, making them much easier to use.
The new gem features a full integration test suite against all combinations of supported Ruby and framework versions. We've also made it easier to verify error reporting in your own tests.
...and much much more
We've only hit the high points here. It'd probably bore you to death if I listed every single improvement we've made.