Class: Chantier::FailurePolicies::Percentage
- Defined in:
- lib/failure_policies.rb
Overview
Limits the number of failures that may be registered by percentage of errors vs successful triggers.
policy = FailByPercentage.new(40)
policy.limit_reached? # => false
600.times { policy.success! }
policy.limit_reached? # => false
1.times { policy.failure! }
policy.limit_reached? # => false
400.times { policy.failure! }
policy.limit_reached? # => true
Instance Method Summary collapse
- #arm! ⇒ Object
- #failure! ⇒ Object
-
#initialize(percents_failing) ⇒ Percentage
constructor
A new instance of Percentage.
- #limit_reached? ⇒ Boolean
- #success! ⇒ Object
Constructor Details
#initialize(percents_failing) ⇒ Percentage
Returns a new instance of Percentage.
72 73 74 |
# File 'lib/failure_policies.rb', line 72 def initialize(percents_failing) @threshold = percents_failing end |
Instance Method Details
#arm! ⇒ Object
76 77 78 |
# File 'lib/failure_policies.rb', line 76 def arm! @failures, @successes = 0, 0 end |
#failure! ⇒ Object
80 81 82 |
# File 'lib/failure_policies.rb', line 80 def failure! @failures += 1 end |
#limit_reached? ⇒ Boolean
88 89 90 91 92 |
# File 'lib/failure_policies.rb', line 88 def limit_reached? return false unless ((@failures + @successes) > 4) ratio = @failures.to_f / (@failures + @successes) (ratio * 100) >= @threshold end |
#success! ⇒ Object
84 85 86 |
# File 'lib/failure_policies.rb', line 84 def success! @successes += 1 end |