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