Class: Circuitbox
- Inherits:
-
Object
show all
- Defined in:
- lib/circuitbox.rb,
lib/circuitbox/version.rb,
lib/circuitbox/notifier.rb,
lib/circuitbox/errors/error.rb,
lib/circuitbox/circuit_breaker.rb,
lib/circuitbox/excon_middleware.rb,
lib/circuitbox/faraday_middleware.rb,
lib/circuitbox/errors/open_circuit_error.rb,
lib/circuitbox/errors/service_failure_error.rb
Defined Under Namespace
Classes: CircuitBreaker, Error, ExconMiddleware, FaradayMiddleware, Notifier, OpenCircuitError, ServiceFailureError
Constant Summary
collapse
- VERSION =
'1.1.1'
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
Returns a new instance of Circuitbox.
22
23
24
|
# File 'lib/circuitbox.rb', line 22
def initialize
self.instance_eval(&@@configure) if @@configure
end
|
Instance Attribute Details
#circuit_store ⇒ Object
Returns the value of attribute circuit_store.
15
16
17
|
# File 'lib/circuitbox.rb', line 15
def circuit_store
@circuit_store
end
|
#circuits ⇒ Object
Returns the value of attribute circuits.
15
16
17
|
# File 'lib/circuitbox.rb', line 15
def circuits
@circuits
end
|
Class Method Details
.[](service_identifier, options = {}) ⇒ Object
43
44
45
|
# File 'lib/circuitbox.rb', line 43
def self.[](service_identifier, options = {})
self.circuit(service_identifier, options)
end
|
.circuit(service_identifier, options = {}) ⇒ Object
47
48
49
50
51
52
53
54
55
56
57
58
|
# File 'lib/circuitbox.rb', line 47
def self.circuit(service_identifier, options = {})
service_name = self.parameter_to_service_name(service_identifier)
self.instance.circuits ||= Hash.new
self.instance.circuits[service_name] ||= CircuitBreaker.new(service_name, options)
if block_given?
self.instance.circuits[service_name].run { yield }
else
self.instance.circuits[service_name]
end
end
|
.circuit_store ⇒ Object
35
36
37
|
# File 'lib/circuitbox.rb', line 35
def self.circuit_store
self.instance.circuit_store ||= Moneta.new(:Memory, expires: true)
end
|
.circuit_store=(store) ⇒ Object
39
40
41
|
# File 'lib/circuitbox.rb', line 39
def self.circuit_store=(store)
self.instance.circuit_store = store
end
|
26
27
28
|
# File 'lib/circuitbox.rb', line 26
def self.configure(&block)
@@configure = block if block
end
|
.instance ⇒ Object
18
19
20
|
# File 'lib/circuitbox.rb', line 18
def self.instance
@@instance ||= new
end
|
.parameter_to_service_name(param) ⇒ Object
60
61
62
63
|
# File 'lib/circuitbox.rb', line 60
def self.parameter_to_service_name(param)
uri = URI(param.to_s)
uri.host.present? ? uri.host : param.to_s
end
|
.reset ⇒ Object
30
31
32
33
|
# File 'lib/circuitbox.rb', line 30
def self.reset
@@instance = nil
@@configure = nil
end
|