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