class Resilient::CircuitBreaker::Registry

Public Class Methods

default() click to toggle source

Internal: Default registry to use for circuit breakers.

# File lib/resilient/circuit_breaker/registry.rb, line 5
def self.default
  @default
end
default=(value) click to toggle source

Internal: Allows overriding default registry for circuit breakers.

# File lib/resilient/circuit_breaker/registry.rb, line 10
def self.default=(value)
  @default = value
end
new(source = nil) click to toggle source
# File lib/resilient/circuit_breaker/registry.rb, line 21
def initialize(source = nil)
  @source = source || {}
end
reset() click to toggle source

Public: Reset the default registry. This completely wipes all instances by swapping out the default registry for a new one and letting the old one get GC'd. Useful in tests to get a completely clean slate.

# File lib/resilient/circuit_breaker/registry.rb, line 17
def self.reset
  default.reset
end

Public Instance Methods

fetch(key) { || ... } click to toggle source

Internal: To be used by CircuitBreaker to either get an instance for a key or set a new instance for a key.

Raises KeyError if key not found and no block provided.

# File lib/resilient/circuit_breaker/registry.rb, line 33
def fetch(key, &block)
  if value = @source[key]
    value
  else
    if block_given?
      @source[key] = yield
    else
      @source.fetch(key)
    end
  end
end
reset() click to toggle source

Internal: To be used by CircuitBreaker to reset the stored circuit breakers, which should only really be used for cleaning up in test environment.

# File lib/resilient/circuit_breaker/registry.rb, line 48
def reset
  @source = {}
  nil
end