module Protoboard::CircuitBreaker::ClassMethods
Public Instance Methods
Registers a list of circuits to be executed
Attributes¶ ↑
-
circuit_methods
- An array of symbols representing the names of the methods to be on a circuit or a hash containing a key with a symbol representing the name of the method and the value as the name of the circuit. -
on_before
- An array of callable objects with code to be executed before each circuit runs -
on_after
- An array of callable objects with code to be executed after each circuit runs -
options
- A hash containing the options needed for the circuit to execute -
:service
- A string representing the name of the service for the circuit -
:open_after
- An integer representing the number of errors to occur for the circuit to be opened -
:cool_off_after
- An integer representing the time in seconds for the circuit to attempt to recover
==== Example options: { service: 'my_cool_service', open_after: 2, cool_off_after: 3 } ====
-
fallback
- A callable object with code to be executed as an alternative plan if the code of the circuit fails
# File lib/protoboard/circuit_breaker.rb, line 31 def register_circuits(circuit_methods, on_before: [], on_after: [], options:, fallback: nil, singleton_methods: []) Protoboard::Helpers::VALIDATE_CALLBACKS.call(on_before) Protoboard::Helpers::VALIDATE_CALLBACKS.call(on_after) circuits = Protoboard::CircuitBreaker.create_circuits( circuit_methods, name, options.merge( fallback: fallback, on_before: on_before, on_after: on_after ), singleton_methods ) circuits.each do |circuit| Protoboard::CircuitBreaker.add_circuit circuit end proxy_module = Protoboard::CircuitBreaker.create_circuit_proxy(circuits, name) prepend proxy_module::InstanceMethods singleton_class.prepend proxy_module::ClassMethods end