Sha256: c08db926377add2812d56e2375d0771f3c84e2cd108f2f4b3a1b04fee642b910

Contents?: true

Size: 926 Bytes

Versions: 5

Compression:

Stored size: 926 Bytes

Contents

module ModelObserver
  class Analyser
    class << self
      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(#{sum_duration}ms) avg(#{average_duration}ms)\n"
          text << analyse_single_class(value)
        end
        text.sub!(/\n$/, '')
        text
      end

      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
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
model_observer-0.2.1 lib/model_observer/analyser.rb
model_observer-0.2.0 lib/model_observer/analyser.rb
model_observer-0.1.3 lib/model_observer/analyser.rb
model_observer-0.1.2 lib/model_observer/analyser.rb
model_observer-0.1.0 lib/model_observer/analyser.rb