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