class Seismograph::Sensor

Attributes

namespace[R]

Public Class Methods

new(namespace) click to toggle source
# File lib/seismograph/sensor.rb, line 10
def initialize(namespace)
  @namespace = namespace
end

Public Instance Methods

benchmark(description, params = {}, &block) click to toggle source
# File lib/seismograph/sensor.rb, line 32
def benchmark(description, params = {}, &block)
  with_success_and_failure(description, params) do
    Gateway.time(stat(description), gateway_params(params), &block)
  end
end
count(description, amount, params = {}, &block) click to toggle source
# File lib/seismograph/sensor.rb, line 14
def count(description, amount, params = {}, &block)
  track(description, amount, params, &block)
end
decrement(description, params = {}) click to toggle source
# File lib/seismograph/sensor.rb, line 22
def decrement(description, params = {})
  Gateway.decrement(stat(description), gateway_params(params))
end
gauge(description, value, params = {}) click to toggle source
# File lib/seismograph/sensor.rb, line 38
def gauge(description, value, params = {})
  Gateway.gauge(stat(description), value, gateway_params(params))
end
increment(description, params = {}) click to toggle source
# File lib/seismograph/sensor.rb, line 18
def increment(description, params = {})
  Gateway.increment(stat(description), gateway_params(params))
end
timing(description, duration, params = {}) click to toggle source

Record the time (in ms) when the code has already been executed. Useful for ActiveSupport::Instrumentation event.duration (which is already in ms)

# File lib/seismograph/sensor.rb, line 28
def timing(description, duration, params = {})
  Gateway.timing(stat(description), duration, gateway_params(params))
end

Private Instance Methods

stat(description) click to toggle source
# File lib/seismograph/sensor.rb, line 61
def stat(description)
  "#{namespace}.#{description}"
end
track(description, amount, params = {}) { || ... } click to toggle source
# File lib/seismograph/sensor.rb, line 44
def track(description, amount, params = {})
  with_success_and_failure(description, params) do
    result = yield if block_given?
    Gateway.histogram(stat(description), amount, gateway_params(params))
    result
  end
end
with_success_and_failure(description, params) { || ... } click to toggle source
# File lib/seismograph/sensor.rb, line 52
def with_success_and_failure(description, params)
  result = yield
  increment("#{description}.success", gateway_params(params))
  result
rescue StandardError => e
  increment("#{description}.failure", gateway_params(params))
  raise e
end