class Chantier::FailurePolicies::Percentage
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
Public Class Methods
new(percents_failing)
click to toggle source
# File lib/failure_policies.rb, line 72 def initialize(percents_failing) @threshold = percents_failing end
Public Instance Methods
arm!()
click to toggle source
# File lib/failure_policies.rb, line 76 def arm! @failures, @successes = 0, 0 end
failure!()
click to toggle source
# File lib/failure_policies.rb, line 80 def failure! @failures += 1 end
limit_reached?()
click to toggle source
# 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!()
click to toggle source
# File lib/failure_policies.rb, line 84 def success! @successes += 1 end