module Evil::Metrics::DSL::ClassMethods

Public Instance Methods

collect(&block) click to toggle source
# File lib/evil/metrics/dsl.rb, line 21
def collect(&block)
  ::Evil::Metrics.collectors.push(block)
end
configure(&block) click to toggle source
# File lib/evil/metrics/dsl.rb, line 16
def configure(&block)
  class_exec(&block)
  @group = nil
end
counter(*args, **kwargs) click to toggle source
# File lib/evil/metrics/dsl.rb, line 29
def counter(*args, **kwargs)
  register(Counter.new(*args, **kwargs, group: @group))
end
gauge(*args, **kwargs) click to toggle source
# File lib/evil/metrics/dsl.rb, line 33
def gauge(*args, **kwargs)
  register(Gauge.new(*args, **kwargs, group: @group))
end
group(group_name) click to toggle source
# File lib/evil/metrics/dsl.rb, line 25
def group(group_name)
  @group = group_name
end
histogram(*args, **kwargs) click to toggle source
# File lib/evil/metrics/dsl.rb, line 37
def histogram(*args, **kwargs)
  register(Histogram.new(*args, **kwargs, group: @group))
end

Private Instance Methods

register(metric) click to toggle source
# File lib/evil/metrics/dsl.rb, line 43
def register(metric)
  name = [metric.group, metric.name].compact.join("_")
  ::Evil::Metrics.define_singleton_method(name) { metric }
  ::Evil::Metrics.metrics[name] = metric
  ::Evil::Metrics.adapters.each do |_, adapter|
    adapter.register!(metric)
  end
  metric
end