class Meter::Metric::Base

Attributes

data[R]
name[R]
sample_rate[RW]
tags[R]
value[RW]

Public Class Methods

new(name:, value: default_value, sample_rate: 1, tags: {}, data: {}) click to toggle source
# File lib/meter/metric/base.rb, line 14
def initialize(name:, value: default_value, sample_rate: 1, tags: {}, data: {})
  self.name = name
  self.value = value
  self.sample_rate = sample_rate
  self.tags = tags
  self.data = data
end

Public Instance Methods

data=(new_data) click to toggle source
# File lib/meter/metric/base.rb, line 31
def data=(new_data)
  @data = default_data.merge(new_data)
end
name=(new_name) click to toggle source
# File lib/meter/metric/base.rb, line 22
def name=(new_name)
  # Replace Ruby module scoping with '.' and reserved chars (: | @) with underscores.
  @name = new_name.to_s.gsub('::', '.').tr(':|@', '_')
end
tags=(new_tags) click to toggle source
# File lib/meter/metric/base.rb, line 27
def tags=(new_tags)
  @tags = default_tags.merge(new_tags)
end
type() click to toggle source
# File lib/meter/metric/base.rb, line 11
def type
end

Private Instance Methods

default_data() click to toggle source
# File lib/meter/metric/base.rb, line 47
def default_data
  {
    timestamp: Time.now.strftime("%FT%H:%M:%S%:z"),
    host:      ::Meter.config.hostname,
  }.merge(::Meter::MDC.data)
end
default_tags() click to toggle source
# File lib/meter/metric/base.rb, line 40
def default_tags
  {
    app:         ::Meter.config.namespace,
    environment: ::Meter.config.environment
  }.merge(::Meter::MDC.tags)
end
default_value() click to toggle source
# File lib/meter/metric/base.rb, line 37
def default_value
end