ensures features gracefully degrade based on error rate or turnaround time.
Add this line to your application's Gemfile:
gem 'gracefully'
And then execute:
$ bundle
Or install it yourself as:
$ gem install gracefully
Set up one instance per feature which is gracefully degradable.
the_feature = Gracefully.
degradable_command(retries: 0, allowed_failures: 1) do |a|
if rand < 0.5
'foo'
else
raise 'err1'
end
end.
fallback_to(retries: 2) do |a|
if rand < 0.5
'bar'
else
raise 'err2'
end
end
10.times.map do
begin
the_feature.call
rescue => e
e.message
end
end
#=> ["bar", "bar", "bar", "bar", "bar", "bar", "bar", "bar", "bar", "Tried to get the value of a failure"]
See spec/gracefully_spec.rb
for more usages.
- Fork it ( https://github.com/[my-github-username]/gracefully/fork )
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create a new Pull Request