Class: Protoboard::Adapters::StoplightAdapter
- Inherits:
-
BaseAdapter
- Object
- BaseAdapter
- Protoboard::Adapters::StoplightAdapter
- Defined in:
- lib/protoboard/adapters/stoplight_adapter.rb
Overview
This class manages every aspect for the execution of a circuit using the gem stoplight
Defined Under Namespace
Classes: Configuration
Class Method Summary collapse
-
.check_state(circuit_name) ⇒ Object
Returns the state of a circuit.
-
.configure(&block) ⇒ Object
This methods is used to make it easier to access adapter configurations.
-
.data_store ⇒ Object
This method is used to make it easier to access adapter data store configuration.
-
.redis_host ⇒ Object
This method is used to make it easier to access adapter redis host configuration.
-
.redis_port ⇒ Object
This method is used to make it easier to access adapter redis port configuration.
-
.run_circuit(circuit, &block) ⇒ Object
Runs the circuit using stoplight.
Methods inherited from BaseAdapter
execute_after_circuit_callbacks, execute_before_circuit_callbacks
Class Method Details
.check_state(circuit_name) ⇒ Object
Returns the state of a circuit
States returned
-
OK
- when that stoplight circuit is green -
NOT_OK
- when that stoplight circuit is yellow or red
77 78 79 80 |
# File 'lib/protoboard/adapters/stoplight_adapter.rb', line 77 def check_state(circuit_name) mapper = { 'yellow' => 'NOT_OK', 'green' => 'OK', 'red' => 'NOT_OK' } mapper[Stoplight(circuit_name).color] end |
.configure(&block) ⇒ Object
This methods is used to make it easier to access adapter configurations
22 23 24 |
# File 'lib/protoboard/adapters/stoplight_adapter.rb', line 22 def configure(&block) Configuration.configure(&block) end |
.data_store ⇒ Object
This method is used to make it easier to access adapter data store configuration
28 29 30 |
# File 'lib/protoboard/adapters/stoplight_adapter.rb', line 28 def data_store Configuration.config.data_store end |
.redis_host ⇒ Object
This method is used to make it easier to access adapter redis host configuration
34 35 36 |
# File 'lib/protoboard/adapters/stoplight_adapter.rb', line 34 def redis_host Configuration.config.redis_host end |
.redis_port ⇒ Object
This method is used to make it easier to access adapter redis port configuration
40 41 42 |
# File 'lib/protoboard/adapters/stoplight_adapter.rb', line 40 def redis_port Configuration.config.redis_port end |
.run_circuit(circuit, &block) ⇒ Object
Runs the circuit using stoplight
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/protoboard/adapters/stoplight_adapter.rb', line 46 def run_circuit(circuit, &block) prepare_data_store circuit_execution = Protoboard::CircuitExecution.new(circuit) execute_before_circuit_callbacks(circuit_execution) stoplight = Stoplight(circuit.name, &block) .with_threshold(circuit.open_after) .with_cool_off_time(circuit.cool_off_after) stoplight.with_fallback(&circuit.fallback) if circuit.fallback value = stoplight.run circuit_execution = ::Protoboard::CircuitExecution.new(circuit, state: :success, value: value) execute_after_circuit_callbacks(circuit_execution) value rescue StandardError => exception circuit_execution = Protoboard::CircuitExecution.new(circuit, state: :fail, error: exception) execute_after_circuit_callbacks(circuit_execution) raise circuit_execution.error if circuit_execution.fail? end |