class ModelObserver::Analyser

Public Class Methods

analyse_single_class(metrics) click to toggle source
# 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) click to toggle source
# File lib/model_observer/analyser.rb, line 20
def average_text(average_duration)
  "avg(#{average_duration.round(1)}ms)"
end
result() click to toggle source
# 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) click to toggle source
# File lib/model_observer/analyser.rb, line 16
def sum_text(sum_duration)
  "sum(#{sum_duration.round(1)}ms)"
end