Class: Rack::Bug::SQLPanel

Inherits:
Panel
  • Object
show all
Defined in:
lib/rack/bug/panels/sql_panel.rb,
lib/rack/bug/panels/sql_panel/query.rb,
lib/rack/bug/panels/sql_panel/panel_app.rb

Defined Under Namespace

Classes: ExplainResult, PanelApp, ProfileResult, QueryResult

Instance Attribute Summary

Attributes inherited from Panel

#request

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Panel

#after, #before, #call, #has_content?, #initialize, #render

Methods included from Render

#compile, #compile!, #compiled_source, #method_name, #method_name_without_locals, #render_template, #signed_params

Constructor Details

This class inherits a constructor from Rack::Bug::Panel

Class Method Details

.queriesObject



35
36
37
# File 'lib/rack/bug/panels/sql_panel.rb', line 35

def self.queries
  Thread.current["rack.test.queries"] ||= []
end

.record(sql, backtrace = [], &block) ⇒ Object



16
17
18
19
20
21
22
23
24
# File 'lib/rack/bug/panels/sql_panel.rb', line 16

def self.record(sql, backtrace = [], &block)
  return block.call unless Rack::Bug.enabled?

  start_time = Time.now
  result = block.call
  queries << QueryResult.new(sql, Time.now - start_time, backtrace)

  return result
end

.record_event(sql, duration, backtrace = []) ⇒ Object



26
27
28
29
# File 'lib/rack/bug/panels/sql_panel.rb', line 26

def self.record_event(sql, duration, backtrace = [])
  return unless Rack::Bug.enabled?
  queries << QueryResult.new(sql, duration, backtrace)
end

.resetObject



31
32
33
# File 'lib/rack/bug/panels/sql_panel.rb', line 31

def self.reset
  Thread.current["rack.test.queries"] = []
end

.total_timeObject



39
40
41
42
43
44
# File 'lib/rack/bug/panels/sql_panel.rb', line 39

def self.total_time
  (queries.inject(0) do |memo, query| 
    Rails.logger.debug{ "QTime: #{query.time}" }
    memo + query.time
  end) * 1_000
end

Instance Method Details

#contentObject



54
55
56
57
58
# File 'lib/rack/bug/panels/sql_panel.rb', line 54

def content
  result = render_template "panels/sql", :queries => self.class.queries
  self.class.reset
  return result
end

#headingObject



50
51
52
# File 'lib/rack/bug/panels/sql_panel.rb', line 50

def heading
  "#{self.class.queries.size} Queries (%.2fms)" % self.class.total_time
end

#nameObject



46
47
48
# File 'lib/rack/bug/panels/sql_panel.rb', line 46

def name
  "sql"
end

#panel_appObject



12
13
14
# File 'lib/rack/bug/panels/sql_panel.rb', line 12

def panel_app
  PanelApp.new
end