class Statue::Metric

Constants

TYPES

Attributes

full_name[R]
name[RW]
sample_rate[RW]
type[RW]
type_description[R]
value[RW]

Public Class Methods

counter(name, value = 1, options = {}) click to toggle source
# File lib/statue/metric.rb, line 16
def self.counter(name, value = 1, options = {})
  new(options.merge(type: :c, value: value, name: name))
end
gauge(name, value, options = {}) click to toggle source
# File lib/statue/metric.rb, line 20
def self.gauge(name, value, options = {})
  new(options.merge(type: :g, value: value, name: name))
end
measure(name, options = {}, &block) click to toggle source
# File lib/statue/metric.rb, line 24
def self.measure(name, options = {}, &block)
  duration = options.delete(:duration)
  value = duration || Statue::Clock.duration_in_ms(&block)
  new(options.merge(type: :ms, value: value, name: name))
end
new(options = {}) click to toggle source
# File lib/statue/metric.rb, line 30
def initialize(options = {})
  @type  = options.fetch(:type)
  @name  = options.fetch(:name)
  @value = options.fetch(:value)
  @type_description = TYPES[type] or raise ArgumentError, "invalid type: #{type}"
  @sample_rate = options[:sample_rate] || 1.0
  @full_name   = Statue.namespace ? "#{Statue.namespace}.#{@name}" : @name
end

Public Instance Methods

inspect() click to toggle source
# File lib/statue/metric.rb, line 45
def inspect
  "#<StatsD::Instrument::Metric #{full_name} #{type_description}(#{value})@#{sample_rate}>"
end
to_s() click to toggle source
# File lib/statue/metric.rb, line 39
def to_s
  str = "#{full_name}:#{value}|#{type}"
  str << "|@#{sample_rate}" if sample_rate != 1.0
  str
end