What
Failsafe is a tiny library that makes it easy to make sure non-critical exceptions don't interrupt program flow. It uses a failure handling system heavily inspired by that of Resque.
You can use failsafe to suppress exceptions from your users, but continue to deliver them to your errors backends (log files, airbrake, etc).
Usage
Failsafe.error_backends << Failsafe::Backends::Stderr
class MyApp < Sinatra::Base
get '/' do
Failsafe.failsafe { track_some_metrics; raise("boom!") }
status(200)
end
end
Disabling Failsafe
In production, you want your app to keep ticking along when certain exceptions
occur without missing a beat. However, in development and test environments,
you probably want to know that exceptions are occurring.
Use the disabled property for that:
if Rails.env.test?
Failsafe.disabled = true
else
# not necessary, this is the default setting
Failsafe.disabled = false
end
Configuration
Failsafe comes with 4 error backends by default: Airbrake, Exceptiona, File, and Stderr. You must add them to the failsafe configuration in order to log exceptions to them:
Failsafe.error_backends << Failsafe::Backends::Airbrake
Failsafe.error_backends << Failsafe::Backends::Stderr
Backends
"Backends" are what handle exceptions instead of letting them bubble up to the user. When an exception occurs within a piece of code wrapped by failsafe, the exception object is handed to each error backend.
Failsafe ships with four error backends by default:
- Airbrake - Send errors to airbrake
- Exceptional - Send errors to exceptional
- Honeybadger - Send errors to honeybadger (see: https://honeybadger.io)
- Stderr - Send errors to stderr
- File - Send errors to a log file
Note: The File backend by default logs to a log file in the log directory called failsafe_errors.log. It can be optionally configured with a different path:
Failsafe::Backends::File.log_file_path = "/path/to/errors.log"
