query_trace3 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/query_trace.rb +86 -0
- metadata +57 -0
data/query_trace.rb
ADDED
@@ -0,0 +1,86 @@
|
|
1
|
+
require 'term/ansicolor'
|
2
|
+
|
3
|
+
# yeilds a stacktrace for each SQL query
|
4
|
+
# put this file in config/initializers
|
5
|
+
class QueryTrace < ActiveSupport::LogSubscriber
|
6
|
+
include Term::ANSIColor
|
7
|
+
attr_accessor :trace_queries
|
8
|
+
|
9
|
+
def sql(event) #:nodoc:
|
10
|
+
return unless QueryTrace.enabled? && logger.debug? && Rails.env.development?
|
11
|
+
stack = Rails.backtrace_cleaner.clean(caller)
|
12
|
+
first_line = stack.shift
|
13
|
+
return unless first_line
|
14
|
+
|
15
|
+
msg = prefix + bold + cyan + "#{first_line}\n" + reset
|
16
|
+
msg += cyan + stack.join("\n") + reset
|
17
|
+
debug msg
|
18
|
+
end
|
19
|
+
|
20
|
+
# :call-seq:
|
21
|
+
# Klass.enabled?
|
22
|
+
#
|
23
|
+
# yields boolean if SQL queries should be logged or not
|
24
|
+
|
25
|
+
def self.enabled?
|
26
|
+
defined?(@trace_queries) && @trace_queries
|
27
|
+
end
|
28
|
+
|
29
|
+
# :call-seq:
|
30
|
+
# Klass.status
|
31
|
+
#
|
32
|
+
# yields text if QueryTrace has been enabled or not
|
33
|
+
|
34
|
+
def self.status
|
35
|
+
QueryTrace.enabled? ? 'enabled' : 'disabled'
|
36
|
+
end
|
37
|
+
|
38
|
+
# :call-seq:
|
39
|
+
# Klass.enable!
|
40
|
+
#
|
41
|
+
# turn on SQL query origin logging
|
42
|
+
|
43
|
+
def self.enable!
|
44
|
+
@trace_queries = true
|
45
|
+
end
|
46
|
+
|
47
|
+
# :call-seq:
|
48
|
+
# Klass.disable!
|
49
|
+
#
|
50
|
+
# turn off SQL query origin logging
|
51
|
+
|
52
|
+
def self.disable!
|
53
|
+
@trace_queries = false
|
54
|
+
end
|
55
|
+
|
56
|
+
# :call-seq:
|
57
|
+
# Klass.toggle!
|
58
|
+
#
|
59
|
+
# Toggles query tracing yielding a boolean indicating the new state of query
|
60
|
+
# origin tracing
|
61
|
+
|
62
|
+
def self.toggle!
|
63
|
+
enabled? ? disable! : enable!
|
64
|
+
enabled?
|
65
|
+
end
|
66
|
+
|
67
|
+
protected
|
68
|
+
|
69
|
+
def prefix #:nodoc:
|
70
|
+
bold(magenta('Called from: ')) + reset
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
QueryTrace.attach_to :active_record
|
75
|
+
|
76
|
+
trap('QUIT') do
|
77
|
+
# Sending 2 backspace characters removes the ^\ that is
|
78
|
+
# printed to the console.
|
79
|
+
rm_noise = "\b\b"
|
80
|
+
|
81
|
+
QueryTrace.toggle!
|
82
|
+
puts "#{rm_noise}=> QueryTrace #{QueryTrace.status}"
|
83
|
+
end
|
84
|
+
|
85
|
+
QueryTrace.enable! if ENV['QUERY_TRACE']
|
86
|
+
puts "=> QueryTrace #{QueryTrace.status}; CTRL-\\ to toggle"
|
metadata
ADDED
@@ -0,0 +1,57 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: query_trace3
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- belt
|
9
|
+
- Aaron Suggs
|
10
|
+
autorequire:
|
11
|
+
bindir: bin
|
12
|
+
cert_chain: []
|
13
|
+
date: 2012-02-29 00:00:00.000000000 Z
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: term-ansicolor
|
17
|
+
requirement: &70328571525760 !ruby/object:Gem::Requirement
|
18
|
+
none: false
|
19
|
+
requirements:
|
20
|
+
- - ! '>='
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '0'
|
23
|
+
type: :runtime
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: *70328571525760
|
26
|
+
description: Query Trace plugin w/ rails3 support; based on https://gist.github.com/1137342
|
27
|
+
email: aaron@ktheory.com
|
28
|
+
executables: []
|
29
|
+
extensions: []
|
30
|
+
extra_rdoc_files: []
|
31
|
+
files:
|
32
|
+
- query_trace.rb
|
33
|
+
homepage: https://gist.github.com/1762136
|
34
|
+
licenses: []
|
35
|
+
post_install_message:
|
36
|
+
rdoc_options: []
|
37
|
+
require_paths:
|
38
|
+
- .
|
39
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
40
|
+
none: false
|
41
|
+
requirements:
|
42
|
+
- - ! '>='
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
version: '0'
|
45
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
46
|
+
none: false
|
47
|
+
requirements:
|
48
|
+
- - ! '>='
|
49
|
+
- !ruby/object:Gem::Version
|
50
|
+
version: '0'
|
51
|
+
requirements: []
|
52
|
+
rubyforge_project:
|
53
|
+
rubygems_version: 1.8.11
|
54
|
+
signing_key:
|
55
|
+
specification_version: 3
|
56
|
+
summary: Shows backtraces for ActiveRecord queries
|
57
|
+
test_files: []
|