Module: MeasureMethod::Metrics

Defined in:
lib/measure_method/metrics.rb

Class Method Summary collapse

Class Method Details

.count(name:, val: 1, data: {}) ⇒ Object



15
16
17
# File 'lib/measure_method/metrics.rb', line 15

def self.count(name:, val: 1, data: {})
  met_log("count", name, val, data)
end

.measure(name:, val: nil, data: {}, &block) ⇒ Object



19
20
21
22
# File 'lib/measure_method/metrics.rb', line 19

def self.measure(name:, val: nil, data: {}, &block)
  return measure_block(name: name, data: data, &block) if block
  met_log("measure", name, val, data)
end

.measure_block(name:, data: {}, &block) ⇒ Object



40
41
42
43
44
45
46
47
# File 'lib/measure_method/metrics.rb', line 40

def self.measure_block(name:, data: {}, &block)
  out.log(data.merge({starting: name}))
  start = Time.now
  result = yield
  elapsed = (Time.now.to_f - start.to_f) * 1000
  measure(name: name, val: elapsed.round.to_s+"ms", data: data)
  result
end

.met_log(type, name, val, data) ⇒ Object



35
36
37
38
# File 'lib/measure_method/metrics.rb', line 35

def self.met_log(type, name, val, data)
  data["#{type}##{name}"] = val
  out.log(data)
end

.metricfy(name) ⇒ Object



24
25
26
27
28
29
30
31
32
33
# File 'lib/measure_method/metrics.rb', line 24

def self.metricfy(name)
  name.
    gsub('::', '.').
    gsub(' ', '.').
    gsub(/(\/)/, '.').
    gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
    gsub(/([a-z\d])([A-Z])/,'\1_\2').
    gsub(/_/,"-").
    downcase
end

.outObject



7
8
9
# File 'lib/measure_method/metrics.rb', line 7

def self.out
  @out || Logger
end

.out=(o) ⇒ Object



3
4
5
# File 'lib/measure_method/metrics.rb', line 3

def self.out=(o)
  @out = o
end

.sample(name:, val:, data: {}) ⇒ Object



11
12
13
# File 'lib/measure_method/metrics.rb', line 11

def self.sample(name:, val:, data: {})
  met_log("sample", name, val, data)
end