class Shift::CircuitBreaker::CircuitMonitor

Attributes

logger[RW]
monitor[RW]

Public Class Methods

new(monitor: Shift::CircuitBreaker::Adapters::NewRelicAdapter, logger: Shift::CircuitBreaker::CircuitLogger.new) click to toggle source

Initializer creates an instance of the service

@param [Object] monitor - service to handle monitoring @param [Object] logger - service to handle logging

# File lib/shift/circuit_breaker/circuit_monitor.rb, line 12
def initialize(monitor: Shift::CircuitBreaker::Adapters::NewRelicAdapter, logger: Shift::CircuitBreaker::CircuitLogger.new)
  self.monitor = monitor
  self.logger = logger
end

Public Instance Methods

record_metric(name, state) click to toggle source

@param [String] name - The circuit name @param [Symbol] state - The circuit state

# File lib/shift/circuit_breaker/circuit_monitor.rb, line 19
def record_metric(name, state)
  metric = formatted_metric(name, state)
  monitor.call(metric) if monitor.respond_to?(:call)
  logger.info("* #{metric} *")
end

Private Instance Methods

formatted_metric(name, state) click to toggle source
# File lib/shift/circuit_breaker/circuit_monitor.rb, line 27
def formatted_metric(name, state)
  "Custom/#{name.to_s.classify}CircuitBreaker/#{state.to_s.classify}"
end