Class: Circuitbox

Inherits:
Object
  • 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

#initializeCircuitbox

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_storeObject

Returns the value of attribute circuit_store.



15
16
17
# File 'lib/circuitbox.rb', line 15

def circuit_store
  @circuit_store
end

#circuitsObject

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_storeObject



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

.configure(&block) ⇒ Object



26
27
28
# File 'lib/circuitbox.rb', line 26

def self.configure(&block)
  @@configure = block if block
end

.instanceObject



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

.resetObject



30
31
32
33
# File 'lib/circuitbox.rb', line 30

def self.reset
  @@instance = nil
  @@configure = nil
end