query_reviewer 0.1.5 → 0.1.6

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.
@@ -30,6 +30,8 @@ module QueryReviewer
30
30
  end
31
31
 
32
32
  def add_query_output_to_view(total_time)
33
+ return unless Thread.current["query_reviewer_enabled"]
34
+
33
35
  if request.xhr?
34
36
  if cookies["query_review_enabled"]
35
37
  if !response.content_type || response.content_type.include?("text/html")
@@ -48,7 +50,9 @@ module QueryReviewer
48
50
  end
49
51
 
50
52
  def perform_action_with_query_review(*args)
51
- Thread.current["query_reviewer_enabled"] = cookies["query_review_enabled"]
53
+ Thread.current["query_reviewer_enabled"] = (CONFIGURATION["enabled"] == true and cookies["query_review_enabled"]) ||
54
+ (CONFIGURATION["enabled"] == "based_on_session" and session["query_review_enabled"])
55
+
52
56
  t1 = Time.now
53
57
  r = defined?(Rails::Railtie) ? process_action_without_query_review(*args) : perform_action_without_query_review(*args)
54
58
  t2 = Time.now
@@ -62,4 +66,4 @@ module QueryReviewer
62
66
  process_without_query_review(*args)
63
67
  end
64
68
  end
65
- end
69
+ end
@@ -6,7 +6,7 @@ module QueryReviewer
6
6
  base.alias_method_chain :insert, :review
7
7
  base.alias_method_chain :delete, :review
8
8
  end
9
-
9
+
10
10
  def update_with_review(sql, *args)
11
11
  t1 = Time.now
12
12
  result = update_without_review(sql, *args)
@@ -36,15 +36,17 @@ module QueryReviewer
36
36
 
37
37
  result
38
38
  end
39
-
39
+
40
40
  def select_with_review(sql, *args)
41
+ return select_without_review(sql, *args) unless query_reviewer_enabled?
42
+
41
43
  sql.gsub!(/^SELECT /i, "SELECT SQL_NO_CACHE ") if QueryReviewer::CONFIGURATION["disable_sql_cache"]
42
44
  QueryReviewer.safe_log { execute("SET PROFILING=1") } if QueryReviewer::CONFIGURATION["profiling"]
43
45
  t1 = Time.now
44
46
  query_results = select_without_review(sql, *args)
45
47
  t2 = Time.now
46
48
 
47
- if @logger && sql =~ /^select/i && query_reviewer_enabled?
49
+ if @logger && query_reviewer_enabled? && sql =~ /^select/i
48
50
  use_profiling = QueryReviewer::CONFIGURATION["profiling"]
49
51
  use_profiling &&= (t2 - t1) >= QueryReviewer::CONFIGURATION["warn_duration_threshold"].to_f / 2.0 if QueryReviewer::CONFIGURATION["production_data"]
50
52
 
@@ -73,11 +75,11 @@ module QueryReviewer
73
75
  end
74
76
  query_results
75
77
  end
76
-
78
+
77
79
  def query_reviewer_enabled?
78
80
  Thread.current["queries"] && Thread.current["queries"].respond_to?(:find_or_create_sql_query) && Thread.current["query_reviewer_enabled"]
79
81
  end
80
-
82
+
81
83
  def create_or_add_query_to_query_reviewer!(sql, cols, run_time, profile, command = "SELECT", affected_rows = 1)
82
84
  if query_reviewer_enabled?
83
85
  t1 = Time.now
@@ -87,4 +89,4 @@ module QueryReviewer
87
89
  end
88
90
  end
89
91
  end
90
- end
92
+ end
@@ -1,38 +1,38 @@
1
- <p>Total queries: <span class="number"><%= @queries.query_count %></span>&nbsp;&nbsp;
1
+ <p>Total queries: <span class="number"><%= @queries.query_count %></span>&nbsp;&nbsp;
2
2
  <% if @total_time %>Total time: <span class="number" title="TOTAL TIME: <%= @total_time %>s QR_OVERHEAD: <%= @queries.overhead_time %>s">
3
3
  <%= '%.3f' % (@total_time - @queries.overhead_time) %></span>s&nbsp;&nbsp;
4
4
  <% end %>
5
- MySQL Database Time: <span class="number"><%= '%.3f' % @queries.total_duration %></span>s</p>
6
- <p class="indent">With warnings: <span class="number bad"><%= @queries.total_with_warnings %></span> (<%= @queries.percent_with_warnings %>%)</p>
7
- <p class="indent">Without warnings: <span class="number good"><%= @queries.total_without_warnings %></span> (<%= @queries.percent_without_warnings %>%)</p>
5
+ Database Time: <span class="number"><%= '%.3f' % @queries.total_duration %></span>s</p>
6
+ <p class="indent">With warnings: <span class="number bad"><%= @queries.total_with_warnings %></span> (<%= @queries.percent_with_warnings %>%)</p>
7
+ <p class="indent">Without warnings: <span class="number good"><%= @queries.total_without_warnings %></span> (<%= @queries.percent_without_warnings %>%)</p>
8
8
  <p>Type:
9
9
  <% QueryReviewer::SqlQueryCollection::COMMANDS.each do |command| %>
10
10
  <% next if @queries.count_of_command(command).zero? %>
11
11
  <span class="number"><%= @queries.count_of_command(command) %></span> <%= command %>s&nbsp;&nbsp;
12
12
  <% end %>
13
13
  </p>
14
- <% if warnings_no_query_sorted.length + queries_with_warnings_sorted.length > 0 %>
15
- <div class="divider"></div>
16
- <% if warnings_no_query_sorted_nonignored.length + queries_with_warnings_sorted_nonignored.length > 0 %>
17
- <p class="title"><%= warnings_no_query_sorted_nonignored.length + queries_with_warnings_sorted_nonignored.length %> Errors:</p>
18
- <ul>
19
- <%= render :partial => "/warning_no_query", :collection => warnings_no_query_sorted_nonignored %>
20
- <%= render :partial => "/query_with_warning", :collection => queries_with_warnings_sorted_nonignored %>
21
- </ul>
22
- <% end %>
23
- <% if warnings_no_query_sorted_ignored.length + queries_with_warnings_sorted_ignored.length > 0 %>
24
- <%= warnings_no_query_sorted_ignored.length + queries_with_warnings_sorted_ignored.length %> Warnings:
25
- <ul id="query_review_ignored_warnings">
26
- <%= render :partial => "/warning_no_query", :collection => warnings_no_query_sorted_ignored %>
27
- <%= render :partial => "/query_with_warning", :collection => queries_with_warnings_sorted_ignored %>
28
- </ul>
29
- <% end %>
30
- <% end %>
31
- <div class="divider"></div>
32
- <p class="title">Safe queries:</p>
33
- <% if @queries.queries.empty? %>
34
- No queries to display.
35
- <% else %>
14
+ <% if warnings_no_query_sorted.length + queries_with_warnings_sorted.length > 0 %>
15
+ <div class="divider"></div>
16
+ <% if warnings_no_query_sorted_nonignored.length + queries_with_warnings_sorted_nonignored.length > 0 %>
17
+ <p class="title"><%= warnings_no_query_sorted_nonignored.length + queries_with_warnings_sorted_nonignored.length %> Errors:</p>
18
+ <ul>
19
+ <%= render :partial => "/warning_no_query", :collection => warnings_no_query_sorted_nonignored %>
20
+ <%= render :partial => "/query_with_warning", :collection => queries_with_warnings_sorted_nonignored %>
21
+ </ul>
22
+ <% end %>
23
+ <% if warnings_no_query_sorted_ignored.length + queries_with_warnings_sorted_ignored.length > 0 %>
24
+ <%= warnings_no_query_sorted_ignored.length + queries_with_warnings_sorted_ignored.length %> Warnings:
25
+ <ul id="query_review_ignored_warnings">
26
+ <%= render :partial => "/warning_no_query", :collection => warnings_no_query_sorted_ignored %>
27
+ <%= render :partial => "/query_with_warning", :collection => queries_with_warnings_sorted_ignored %>
28
+ </ul>
29
+ <% end %>
30
+ <% end %>
31
+ <div class="divider"></div>
32
+ <p class="title">Safe queries:</p>
33
+ <% if @queries.queries.empty? %>
34
+ No queries to display.
35
+ <% else %>
36
36
  <% QueryReviewer::SqlQueryCollection::COMMANDS.reverse.each do |command| %>
37
37
  <% next if @queries.count_of_command(command, true).zero? %>
38
38
  <ul class="small">
@@ -48,12 +48,12 @@
48
48
  <% end %>
49
49
  <%= render :partial => "/query_sql", :locals=>{ :query_sql => query } %>
50
50
  <% if query.select? %>
51
- <a href="javascript: query_review_toggle('warning_<%= query.id %>_explain')" title="show/hide sql">EXPLN</a>
51
+ <a href="#" onclick="query_review_toggle('warning_<%= query.id %>_explain')" title="show/hide sql">EXPLN</a>
52
52
  <% end %>
53
53
  <% if QueryReviewer::CONFIGURATION["profiling"] && query.profile %>
54
- <a href="javascript: query_review_toggle('warning_<%= query.id %>_profile')" title="show/hide profile">PROF</a>
54
+ <a href="#" onclick="query_review_toggle('warning_<%= query.id %>_profile')" title="show/hide profile">PROF</a>
55
55
  <% end %>
56
- <a href="javascript: query_review_toggle('warning_<%= query.id %>_trace')" title="show/hide stack trace">TRACE</a>
56
+ <a href="#" onclick="query_review_toggle('warning_<%= query.id %>_trace')" title="show/hide stack trace">TRACE</a>
57
57
  <div style="display: none" id="warning_<%= query.id %>_explain" class="indent small tbpadded">
58
58
  <%= render :partial => "/explain", :locals => {:query => query} %>
59
59
  </div>
@@ -70,4 +70,4 @@
70
70
  </ul>
71
71
  <% end %>
72
72
  <% end %>
73
- <p id="query_review_disable_link"><a href="javascript: eraseCookie('query_review_enabled'); query_review_hide('query_review_disable_link'); alert('Cookie successfully set.');">Disable analysis report</a> on next page load and from now on.</p>
73
+ <p id="query_review_disable_link"><a href="#" onclick="eraseCookie('query_review_enabled'); query_review_hide('query_review_disable_link'); alert('Cookie successfully set.');">Disable analysis report</a> on next page load and from now on.</p>
@@ -1,2 +1,2 @@
1
1
  <p>SQL analysis has been disabled for you. A cookie must be set to enable analysis. This generally slows down your browser, so it's only recommended for users analyzing SQL queries.</p>
2
- <p id="query_review_enable_link"><b><a href="javascript: createCookie('query_review_enabled', '1'); query_review_hide('query_review_enable_link'); alert('Cookie successfully set.');">Enabled it</a> on next page load and from now on.</b></p>
2
+ <p id="query_review_enable_link"><b><a href="#" onclick="createCookie('query_review_enabled', '1'); query_review_hide('query_review_enable_link'); alert('Cookie successfully set.');">Enabled it</a> on next page load and from now on.</b></p>
@@ -11,7 +11,7 @@
11
11
  <% end %>
12
12
  <% end %>
13
13
  </code>
14
- <a href="javascript: query_review_toggle('trace_<%= query_id %>_abridged'); query_review_toggle('trace_<%= query_id %>_full')" title="show full trace">FULL</a>
14
+ <a href="#" onclick="query_review_toggle('trace_<%= query_id %>_abridged'); query_review_toggle('trace_<%= query_id %>_full')" title="show full trace">FULL</a>
15
15
  </div>
16
16
 
17
17
  <div class="trace" style="display: none; max-height: 300px; overflow: scroll" id="trace_<%= query_id %>_full">
@@ -27,5 +27,5 @@
27
27
  <% end %>
28
28
  <% end %>
29
29
  </code>
30
- <a href="javascript: query_review_toggle('trace_<%= query_id %>_abridged'); query_review_toggle('trace_<%= query_id %>_full')" title="show short trace">SHORT</a>
30
+ <a href="#" onclick="query_review_toggle('trace_<%= query_id %>_abridged'); query_review_toggle('trace_<%= query_id %>_full')" title="show short trace">SHORT</a>
31
31
  </div>
@@ -16,19 +16,19 @@
16
16
  <% query_with_warning.warnings.sort{|a,b| a.severity <=> b.severity}.reverse.each_with_index do |warn, index| %>
17
17
  <span style="color: <%= severity_color warn.severity%>;" title="<%= warn.desc%>"><%= warn.problem %></span><%= ", " if index < query_with_warning.warnings.length - 1 %>
18
18
  <% end %>
19
- <a href="javascript: query_review_toggle('warning_<%= query_with_warning.id %>_desc')" title="show/hide warning message">MSG</a>
20
- <a href="javascript: query_review_toggle('warning_<%= query_with_warning.id %>_sql')" title="show/hide sql">SQL</a>
19
+ <a href="#" onclick="query_review_toggle('warning_<%= query_with_warning.id %>_desc')" title="show/hide warning message">MSG</a>
20
+ <a href="#" onclick="query_review_toggle('warning_<%= query_with_warning.id %>_sql')" title="show/hide sql">SQL</a>
21
21
  <% if query_with_warning.select? %>
22
- <a href="javascript: query_review_toggle('warning_<%= query_with_warning.id %>_explain')" title="show/hide explain output">EXPLN</a>
22
+ <a href="#" onclick="query_review_toggle('warning_<%= query_with_warning.id %>_explain')" title="show/hide explain output">EXPLN</a>
23
23
  <% end %>
24
24
  <% if QueryReviewer::CONFIGURATION["profiling"] && query_with_warning.profile %>
25
- <a href="javascript: query_review_toggle('warning_<%= query_with_warning.id %>_profile')" title="show/hide profile output">PROF</a>
25
+ <a href="#" onclick="query_review_toggle('warning_<%= query_with_warning.id %>_profile')" title="show/hide profile output">PROF</a>
26
26
  <% end %>
27
- <a href="javascript: query_review_toggle('warning_<%= query_with_warning.id %>_trace')" title="show/hide stack trace">TRACE</a>
27
+ <a href="#" onclick="query_review_toggle('warning_<%= query_with_warning.id %>_trace')" title="show/hide stack trace">TRACE</a>
28
28
  <% if ignore_hash?(query_with_warning.to_hash) %>
29
- <a href="javascript: remove_ignore_hash('<%= query_with_warning.to_hash %>'); query_review_hide('query_<%= query_with_warning.id %>')" title="stop ignore this query from now on">UNIGNR</a>
29
+ <a href="#" onclick="remove_ignore_hash('<%= query_with_warning.to_hash %>'); query_review_hide('query_<%= query_with_warning.id %>')" title="stop ignore this query from now on">UNIGNR</a>
30
30
  <% else %>
31
- <a href="javascript: add_ignore_hash('<%= query_with_warning.to_hash %>'); query_review_hide('query_<%= query_with_warning.id %>')" title="ignoring this query from now on">IGNR</a>
31
+ <a href="#" onclick="add_ignore_hash('<%= query_with_warning.to_hash %>'); query_review_hide('query_<%= query_with_warning.id %>')" title="ignoring this query from now on">IGNR</a>
32
32
  <% end %>
33
33
  </p>
34
34
  </div>
metadata CHANGED
@@ -1,33 +1,23 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: query_reviewer
3
- version: !ruby/object:Gem::Version
4
- hash: 17
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.6
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 1
9
- - 5
10
- version: 0.1.5
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - dsboulder, nesquena
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2012-02-13 00:00:00 -08:00
19
- default_executable:
12
+ date: 2012-11-15 00:00:00.000000000 Z
20
13
  dependencies: []
21
-
22
- description: Runs explain before each select query and displays results in an overlayed div
14
+ description: Runs explain before each select query and displays results in an overlayed
15
+ div
23
16
  email: nesquena@gmail.com
24
17
  executables: []
25
-
26
18
  extensions: []
27
-
28
19
  extra_rdoc_files: []
29
-
30
- files:
20
+ files:
31
21
  - MIT-LICENSE
32
22
  - Rakefile
33
23
  - README.md
@@ -59,39 +49,29 @@ files:
59
49
  - lib/query_reviewer/views/_warning_no_query.html.erb
60
50
  - lib/query_reviewer/views/query_review_box_helper.rb
61
51
  - lib/query_reviewer.rb
62
- has_rdoc: true
63
52
  homepage: https://github.com/nesquena/query_reviewer
64
53
  licenses: []
65
-
66
54
  post_install_message:
67
55
  rdoc_options: []
68
-
69
- require_paths:
56
+ require_paths:
70
57
  - lib
71
- required_ruby_version: !ruby/object:Gem::Requirement
58
+ required_ruby_version: !ruby/object:Gem::Requirement
72
59
  none: false
73
- requirements:
74
- - - ">="
75
- - !ruby/object:Gem::Version
76
- hash: 3
77
- segments:
78
- - 0
79
- version: "0"
80
- required_rubygems_version: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - ! '>='
62
+ - !ruby/object:Gem::Version
63
+ version: '0'
64
+ required_rubygems_version: !ruby/object:Gem::Requirement
81
65
  none: false
82
- requirements:
83
- - - ">="
84
- - !ruby/object:Gem::Version
85
- hash: 3
86
- segments:
87
- - 0
88
- version: "0"
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
89
70
  requirements: []
90
-
91
71
  rubyforge_project:
92
- rubygems_version: 1.6.2
72
+ rubygems_version: 1.8.24
93
73
  signing_key:
94
74
  specification_version: 3
95
- summary: Runs explain before each select query and displays results in an overlayed div
75
+ summary: Runs explain before each select query and displays results in an overlayed
76
+ div
96
77
  test_files: []
97
-