Module: Multimeter::Metrics

Defined in:
lib/multimeter.rb

Defined Under Namespace

Modules: Dsl

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(m) ⇒ Object



159
160
161
# File 'lib/multimeter.rb', line 159

def self.included(m)
  m.extend(Dsl)
end

Instance Method Details

#initialize(*args) ⇒ Object



163
164
165
166
167
168
169
170
171
172
# File 'lib/multimeter.rb', line 163

def initialize(*args)
  super
  self.class.instance_gauges.each do |name, block|
    instance_block = proc { instance_exec(&block) }
    multimeter_registry.gauge(name, &instance_block)
  end
  self.class.instance_metrics.each do |type, name, options|
    multimeter_registry.send(type, name, options)
  end
end

#multimeter_registryObject



174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
# File 'lib/multimeter.rb', line 174

def multimeter_registry
  registry_mode = self.class.send(:registry_mode)
  case registry_mode
  when :instance, :linked_instance
    @multimeter_registry ||= begin
      package, _, class_name = self.class.name.rpartition('::')
      group = self.class.send(:group) || package
      scope = self.class.send(:scope) || class_name
      if (iid_proc = self.class.send(:instance_id))
        instance_id = instance_exec(&iid_proc)
      else
        instance_id = self.object_id
      end
      if registry_mode == :linked_instance
        ::Multimeter.global_registry.sub_registry(scope, instance_id)
      else
        ::Multimeter.registry(group, scope, instance_id)
      end
    end
  when :global
    ::Multimeter.global_registry
  else
    self.class.multimeter_registry
  end
end