class Honeybadger::Metric
def self.metric_type
def self.metric_type name.split("::").last.downcase end
def self.register(registry, metric_name, attributes)
def self.register(registry, metric_name, attributes) registry.get(metric_type, metric_name, attributes) || registry.register(new(metric_name, attributes)) end
def self.signature(metric_type, name, attributes)
def self.signature(metric_type, name, attributes) Digest::SHA1.hexdigest("#{metric_type}-#{name}-#{attributes.keys.join("-")}-#{attributes.values.join("-")}").to_sym end
def base_payload
def base_payload attributes.merge({ event_type: "metric.hb", metric_name: name, metric_type: metric_type, samples: samples }) end
def event_payloads
def event_payloads payloads.map do |payload| base_payload.merge(payload) end end
def initialize(name, attributes)
def initialize(name, attributes) @name = name @attributes = attributes || {} @samples = 0 end
def metric_type
def metric_type self.class.metric_type end
def signature
def signature self.class.signature(metric_type, name, attributes) end