lib/spectator/meter_id.rb in netflix-spectator-rb-0.2.1 vs lib/spectator/meter_id.rb in netflix-spectator-rb-0.2.2
- old
+ new
@@ -1,7 +1,5 @@
-# frozen_string_literal: true
-
module Spectator
# Identifier for a meter or Measure
class MeterId
attr_reader :name, :tags
def initialize(name, maybe_tags = nil)
@@ -25,26 +23,19 @@
with_tag(:statistic, stat_value)
end
# lazyily compute a key to be used in hashes for efficiency
def key
- if @key.nil?
- hash_key = @name.to_s
- @key = hash_key
- keys = @tags.keys
- keys.sort
- keys.each do |k|
- v = tags[k]
- hash_key += "|#{k}|#{v}"
- end
- @key = hash_key
+ @key ||= begin
+ "#{name}|" << @tags.keys.sort.map do |k|
+ [k, @tags[k]]
+ end.flatten.join('|')
end
- @key
end
# A string representation for debugging purposes
def to_s
- "MeterId{name=#{@name}, tags=#{@tags}}"
+ "MeterId{name=#{@name}, tags=#{@tags}}".freeze
end
# Compare our id and tags against another MeterId
def ==(other)
other.name == @name && other.tags == @tags