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.0.2'
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
Returns a new instance of Circuitbox.
25
26
27
|
# File 'lib/circuitbox.rb', line 25
def initialize
self.instance_eval(&@@configure) if @@configure
end
|
Instance Attribute Details
#circuit_store ⇒ Object
Returns the value of attribute circuit_store.
18
19
20
|
# File 'lib/circuitbox.rb', line 18
def circuit_store
@circuit_store
end
|
#circuits ⇒ Object
Returns the value of attribute circuits.
18
19
20
|
# File 'lib/circuitbox.rb', line 18
def circuits
@circuits
end
|
Class Method Details
.[](service_identifier, options = {}) ⇒ Object
46
47
48
|
# File 'lib/circuitbox.rb', line 46
def self.[](service_identifier, options = {})
self.circuit(service_identifier, options)
end
|
.circuit(service_identifier, options = {}) ⇒ Object
50
51
52
53
54
55
56
57
58
59
60
61
|
# File 'lib/circuitbox.rb', line 50
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
38
39
40
|
# File 'lib/circuitbox.rb', line 38
def self.circuit_store
self.instance.circuit_store ||= Moneta.new(:Memory)
end
|
.circuit_store=(store) ⇒ Object
42
43
44
|
# File 'lib/circuitbox.rb', line 42
def self.circuit_store=(store)
self.instance.circuit_store = store
end
|
29
30
31
|
# File 'lib/circuitbox.rb', line 29
def self.configure(&block)
@@configure = block if block
end
|
.instance ⇒ Object
21
22
23
|
# File 'lib/circuitbox.rb', line 21
def self.instance
@@instance ||= new
end
|
.parameter_to_service_name(param) ⇒ Object
63
64
65
66
|
# File 'lib/circuitbox.rb', line 63
def self.parameter_to_service_name(param)
uri = URI(param.to_s)
uri.host.present? ? uri.host : param.to_s
end
|
.reset ⇒ Object
33
34
35
36
|
# File 'lib/circuitbox.rb', line 33
def self.reset
@@instance = nil
@@configure = nil
end
|