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.
Instance Method Summary collapse
-
#initialize ⇒ StoplightAdapter
constructor
A new instance of StoplightAdapter.
Methods inherited from BaseAdapter
execute_after_circuit_callbacks, execute_before_circuit_callbacks
Constructor Details
#initialize ⇒ StoplightAdapter
Returns a new instance of StoplightAdapter.
19 20 21 |
# File 'lib/protoboard/adapters/stoplight_adapter.rb', line 19 def initialize prepare_data_store end |
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
81 82 83 84 |
# File 'lib/protoboard/adapters/stoplight_adapter.rb', line 81 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
26 27 28 |
# File 'lib/protoboard/adapters/stoplight_adapter.rb', line 26 def configure(&block) Configuration.configure(&block) end |
.data_store ⇒ Object
This method is used to make it easier to access adapter data store configuration
32 33 34 |
# File 'lib/protoboard/adapters/stoplight_adapter.rb', line 32 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
38 39 40 |
# File 'lib/protoboard/adapters/stoplight_adapter.rb', line 38 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
44 45 46 |
# File 'lib/protoboard/adapters/stoplight_adapter.rb', line 44 def redis_port Configuration.config.redis_port end |
.run_circuit(circuit, &block) ⇒ Object
Runs the circuit using stoplight
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/protoboard/adapters/stoplight_adapter.rb', line 50 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 |