Rails provides a common interface, ActiveSupport::ErrorReporter,
for error reporting services.
his allows external gems such as HoneyBadger, Sentry, Rollbar and more to standardize their
monitoring of errors throughout the platform.
The ActiveSupport::ErrorReporter follows a pub-sub pattern,
where subscribers can register to receive error reports.
Every subscriber must be registered
and respond to,
The context hash is used to provide additional information about the error.
For example, the context hash can include the current user, the current request,
the current controller,
and more.
Here’s an example,
To capture an error ActiveSupport::ErrorReporter provides two methods, handle and record.
The basic difference is that handle swallows the error while record re-raises the error.
Both methods take an exception
and an optional context hash.
All captured errors are sent to all registered subscribers.
Before
In order to capture the source of the error,
users previously could send the source as part of the context hash.
This was not ideal because it was not standardized
and hence was not possible to filter on the source.
After
Thanks to this PR,
Rails now provides a standardized way to capture the source of the error.
The source can be set using the source attribute of the ErrorReporter.
This works in a similar fashion to the severity attribute.
The source can be set to any string value.
The default value is application.
Let’s now see an example. First let’s modify the Subscriber to capture the source and severity attribute.
We then register the subscriber
and then capture an error with a source.
Now, we can further modify the error subscriber
to ignore all “application” source errors.
This makes it easier to filter out internal errors
and focus on specific errors.