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