Safely
safely do
# keep going if this code fails
end
Exceptions are rescued and automatically reported to your favorite reporting service.
In development and test environments, exceptions are raised so you can fix them.
Use It Everywhere
“Oh no, analytics brought down search”
safely { track_search(params) }
“Recommendations stopped updating because of one bad user”
users.each do |user|
safely { update_recommendations(user) }
end
Also aliased as yolo
.
Features
Specify a default value to return on exceptions
= safely(default: true) { }
Raise specific exceptions
safely except: ActiveRecord::RecordNotUnique do
# all other exceptions will be rescued
end
Pass an array for multiple exception classes.
Rescue only specific exceptions
safely only: ActiveRecord::RecordNotUnique do
# all other exceptions will be raised
end
Silence exceptions
safely silence: ActiveRecord::RecordNotUnique do
# code
end
Throttle reporting with:
safely throttle: {limit: 10, period: 1.minute} do
# reports only first 10 exceptions each minute
end
Note: The throttle limit is approximate and per process.
Reporting
Reports exceptions to a variety of services out of the box thanks to Errbase.
Customize reporting with:
Safely.report_exception_method = -> (e) { Rollbar.error(e) }
By default, exception messages are prefixed with [safely]
. This makes it easier to spot rescued exceptions. Turn this off with:
Safely.tag = false
To report exceptions manually:
Safely.report_exception(e)
Installation
Add this line to your application’s Gemfile:
gem 'safely_block'
History
View the changelog
Contributing
Everyone is encouraged to help improve this project. Here are a few ways you can help:
- Report bugs
- Fix bugs and submit pull requests
- Write, clarify, or fix documentation
- Suggest or add new features