Sha256: 5ce4cf2192146fdda28c2a57c6ce49b647208ce3c4193c1680e770fff4c1623d

Contents?: true

Size: 1018 Bytes

Versions: 1

Compression:

Stored size: 1018 Bytes

Contents

require "rack/bug/panel"
require "rack/bug/panels/active_record_panel/activerecord_extensions"

module Rack
  module 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

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
perfectline-rack-bug-0.1.1 lib/rack/bug/panels/active_record_panel.rb