Sha256: 29d6a645fdf129d102176a5f18ec3b03159f323ca8c3fbde3bf802829c2c1469
Contents?: true
Size: 1.15 KB
Versions: 2
Compression:
Stored size: 1.15 KB
Contents
# frozen_string_literal: true # Released under the MIT License. # Copyright, 2023-2024, by Samuel Williams. require "console" require_relative "../metric" module Metrics module Backend module Capture class Metric < Metrics::Metric def initialize(...) super @values = [] @tags = Set.new @sample_rates = [] end attr :values attr :tags attr :sample_rates def emit(value, tags: nil, sample_rate: 1.0) @values << value @tags.merge(tags) if tags @sample_rates << sample_rate end def as_json { name: @name, type: @type, description: @description, unit: @unit, values: @values, tags: @tags.to_a.sort, sample_rates: @sample_rates.sort.uniq } end def to_json(...) as_json.to_json(...) end end def self.metrics @metrics ||= [] end module Interface def metric(name, type, description: nil, unit: nil, &block) metric = Metric.new(name, type, description, unit) Capture.metrics << metric return metric end end end Interface = Capture::Interface end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
metrics-0.12.0 | lib/metrics/backend/capture.rb |
metrics-0.11.0 | lib/metrics/backend/capture.rb |