class CircuitBreaker::Memory

Attributes

circuit[RW]

The main runner, must respond to call @return [Proc/Lambda] the runner

failure_limit[RW]

The count of failures @return [Integer] the amount of failures to permit. Defaults to 10 seconds

failures[RW]

The current failures @return [Array<CircuitBreaker::Failure>] - a list of failures serialized.

logger[RW]

The current logger @return [Object] - The logger sent in at initialization. Defaults to ruby’s std Logger class

reset_timeout[RW]

The amount of time in seconds before a breaker should reset if currently open. Defaults to 5 @return [Integer]

state[RW]

The current state @return [Symbol] should always return either :open, :closed or :half-open.

Use the helper methods in lib/circuit_breaker.rb for more readable code.

Public Class Methods

new() { |self| ... } click to toggle source

@example create a new breaker

breaker = CircuitBreaker::Memory.new do |cb|
  cb.circuit = -> (arg) { my_method(arg) }
  cb.failure_limit = 2
  cb.reset_timeout = 5
end

@yieldparam circuit - (look to {#circuit}) @yieldparam failure_limit - (look to {#failure_limit}) @yieldparam reset_timeout - (look to {#reset_timeout}) @yieldparam logger - (look to {#logger}) @return [CircuitBreaker::Memory] the object.

# File lib/circuit_breaker/memory.rb, line 37
def initialize(&block)
  yield self
  @failure_limit ||= 5
  @reset_timeout ||= 10
  @logger ||= Logger.new(STDOUT)
  @state = :closed
  @failures = []
  run_validations
end

Public Instance Methods

add_failure(failure) click to toggle source

(look to {CircuitBreaker::add_failure})

# File lib/circuit_breaker/memory.rb, line 48
def add_failure(failure)
  failures << failure
end