Recently, we released version 2.13.0 of the rollbar-gem. This update is full of new features and some minor bug fixes. The full release notes can be found here, Release 2.13.0. Here are a few of the highlights in this update:
1. Allow overriding configuration
Many customers have asked to implement a way to override the default configuration for a specific block of code. Some of them use the same process to send reports to our API for different projects, some need to change the environment, and others want to use one async handler for a single block of code (or none at all).
So, we've added a new method called Rollbar.with_config
to do this. It receives a Hash
object with the configuration overrides you want to use for the given block. The configuration options can be found at Configuration. The Hash
passed to with_config
should be formatted like {environment: 'specific-environment'}
. For example:
Rollbar.with_config(use_async: false) do
begin
# do work that may crash
rescue => e
Rollbar.error(e)
end
end
This method looks similar to Rollbar.scoped
, and Rollbar.with_config
uses it internally. Now Rollbar.scoped
can receive a second argument with the configuration overrides for the given block of code. So if you need to set a new payload scope and new config for a code block, you can write:
scope = {context: 'foo'}
new_config = {framework: 'Sinatra'}
Rollbar.scoped(scope, new_config) do
begin
# do work that may crash
rescue => e
Rollbar.error(e)
end
end
In the example above, we are defining a new payload scope and overriding the framework
configuration for the reported errors inside the given block.
2. Code and context
The data we send for each frame in a backtrace is the filename, code line number, and the method name. In the occurrence detail you can see the formatted backtrace showing that data.
However, Rollbar can give you more detailed information about the line of code for each frame. In fact, we can display the exact text for each line of code in the backtrace. Previously, the gem wasn't sending this information, so we've added it as a feature to this new release. You can configure whether or not to send the extra data per frame, send it only for lines of code related to your project files, or send it for all the backtrace lines. The new configuration option is send_extra_frame_data
and can have the values :none
, :app
or :all
. Example:
Rollbar.configure do |config|
config.send_extra_frame_data = :all
end
3. Async with Resque
We've integrated the implementation for the Resque async handler from resque-rollbar in the gem, so you don't have to install the resque-rollbar
gem anymore. Other async handlers were already available in the gem, such as DelayedJob
, GirlFriday
, Sidekiq
, SuckerPunch
, or the basic threaded one. We also wanted to have Resque in the gem, since we know it's used by many of our customers.
4. Content-Type and Content-Length
When debugging errors, it's important have as much useful information as possible, and we were missing the headers Content-Type
and Content-Length
. Now you'll see them in your occurrence details, so it will be easier to identify common errors with empty JSON bodies or wrong content types.
5. GET, POST, and JSON body in the right places
When pushing the request data into our API we were merging all the GET, POST, and JSON body parameters, and (if defined) Rails route parameters into the params
attribute. We implemented it this way so that in a Rails controller you'd have everything merged into the params
value. However, we wanted to separate them so it will be easier to find the correct data and identify what exactly is in the GET, POST, JSON body, or route params. Now, you'll find all that data is separated out in the occurrence details.
6. Bug fixes
We've pushed a few bug fixes for the gem, some of which were reported by our customers. Thank you to everyone who reported bugs! Some important bug fixes:
- Fix DelayedJob serialization on some backends
- Unable to send Rake reports at some scenarios
- Validation reports with ActiveModel objects are fixed
I hope you take full advantage of the updates to the ruby gem. Please feel free to make pull requests, if there's anything you feel we could do better!
If you haven’t already, signup for a 14-day free trial of Rollbar and let us help you
defeat annoying ruby errors in your applications. 🙂