Class: ModelObserver::Analyser

Inherits:
Object
  • Object
show all
Defined in:
lib/model_observer/analyser.rb

Class Method Summary collapse

Class Method Details

.analyse_single_class(metrics) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/model_observer/analyser.rb', line 24

def analyse_single_class(metrics)
  return if metrics.empty?
  primary_key = metrics.first.model_class.primary_key
  hash = {}
  metrics.each do |m|
    hash[m.model_id] ||= 0
    hash[m.model_id] += 1
  end
  hash
  text = ""
  hash.sort_by{|key, value| key}.each do |key, value|
    text << "  #{primary_key}(#{key}): #{value}\n" if value > 1
  end
  text
end

.average_text(average_duration) ⇒ Object



20
21
22
# File 'lib/model_observer/analyser.rb', line 20

def average_text(average_duration)
  "avg(#{average_duration.round(1)}ms)"
end

.resultObject



4
5
6
7
8
9
10
11
12
13
14
# File 'lib/model_observer/analyser.rb', line 4

def result
  text = ""
  Collector.metrics_hash.each do |key, value|
    sum_duration = value.map(&:duration).sum
    average_duration = sum_duration / value.count
    text << "#{key}: #{value.count} #{sum_text(sum_duration)} #{average_text(average_duration)}\n"
    text << analyse_single_class(value)
  end
  text.sub!(/\n$/, '')
  text
end

.sum_text(sum_duration) ⇒ Object



16
17
18
# File 'lib/model_observer/analyser.rb', line 16

def sum_text(sum_duration)
  "sum(#{sum_duration.round(1)}ms)"
end