module Shift::CircuitBreaker

Example Usage:

class MyClass

CIRCUIT_BREAKER = Shift::CircuitBreaker.new(:an_identifier_for_the_circuit,
                                            error_threshold: 10,
                                            skip_duration: 60,
                                            log_errors: true,
                                            additional_exception_classes: [Faraday::ClientError]
                                          )

def do_something
  # Note: operation and fallback should implement the public method #call or wrapped in a Proc/Lambda (as in the example below).
  CIRCUIT_BREAKER.call(operation: -> { SomeService.new(name: 'test').perform_task }, fallback: -> { [1, 2, 3, 4, 5].sum })
end

end

Constants

VERSION

Public Class Methods

config() click to toggle source
# File lib/shift/circuit_breaker.rb, line 46
def config
  @config ||= Shift::CircuitBreaker::Config.instance
end
configure() { |config| ... } click to toggle source
# File lib/shift/circuit_breaker.rb, line 50
def configure
  @config = Shift::CircuitBreaker::Config.instance.tap do |config|
    yield config if block_given?
  end
  @config.initialize_dependencies
end
new(*args) click to toggle source
# File lib/shift/circuit_breaker.rb, line 42
def new(*args)
  Shift::CircuitBreaker::CircuitHandler.new(*args)
end