brynary/rack-bug

View on GitHub
lib/rack/bug/panels/active_record_panel.rb

Summary

Maintainability
A
0 mins
Test Coverage
require "rack/bug/panels/active_record_panel/activerecord_extensions"

module Rack
  class Bug

    class ActiveRecordPanel < Panel

      def self.record(class_name)
        return unless Rack::Bug.enabled?
        records[class_name] += 1
      end

      def self.reset
        Thread.current["rack.bug.active_records"] = Hash.new { 0 }
      end

      def self.records
        Thread.current["rack.bug.active_records"] ||= Hash.new { 0 }
      end

      def self.total
        records.inject(0) do |memo, (key, value)|
          memo + value
        end
      end

      def name
        "active_record"
      end

      def heading
        "#{self.class.total} AR Objects"
      end

      def content
        records = self.class.records.to_a.sort_by { |key, value| value }.reverse
        result = render_template "panels/active_record", :records => records
        self.class.reset
        result
      end

    end

  end
end