Class: CircuitBreaker::Memory

Inherits:
Object
  • Object
show all
Includes:
CircuitBreaker
Defined in:
lib/circuit_breaker/memory.rb

Constant Summary

Constants included from CircuitBreaker

VERSION

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from CircuitBreaker

#call, #closed?, #failure_count, #half_open?, #open?

Constructor Details

#initialize {|circuit, failure_limit, reset_timeout, logger| ... } ⇒ CircuitBreaker::Memory

Returns the object.

Examples:

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

Yield Parameters:



37
38
39
40
41
42
43
44
45
# 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

Instance Attribute Details

#circuitProc/Lambda

The main runner, must respond to #call

Returns:

  • (Proc/Lambda)

    the runner



7
8
9
# File 'lib/circuit_breaker/memory.rb', line 7

def circuit
  @circuit
end

#failure_limitInteger

The count of failures

Returns:

  • (Integer)

    the amount of failures to permit. Defaults to 10 seconds



10
11
12
# File 'lib/circuit_breaker/memory.rb', line 10

def failure_limit
  @failure_limit
end

#failuresArray<CircuitBreaker::Failure>

The current failures

Returns:



23
24
25
# File 'lib/circuit_breaker/memory.rb', line 23

def failures
  @failures
end

#loggerObject

The current logger

Returns:

  • (Object)
    • The logger sent in at initialization. Defaults to ruby’s std Logger class



16
17
18
# File 'lib/circuit_breaker/memory.rb', line 16

def logger
  @logger
end

#reset_timeoutInteger

The amount of time in seconds before a breaker should reset if currently open. Defaults to 5

Returns:

  • (Integer)


13
14
15
# File 'lib/circuit_breaker/memory.rb', line 13

def reset_timeout
  @reset_timeout
end

#stateSymbol

The current state

Returns:

  • (Symbol)

    should always return either :open, :closed or :half-open. Use the helper methods in lib/circuit_breaker.rb for more readable code.



20
21
22
# File 'lib/circuit_breaker/memory.rb', line 20

def state
  @state
end

Instance Method Details

#add_failure(failure) ⇒ Object

(look to add_failure)



48
49
50
# File 'lib/circuit_breaker/memory.rb', line 48

def add_failure(failure)
  failures << failure
end