miniprofiler 0.1.7.3 → 0.1.7.4

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.
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- miniprofiler (0.1.7.3)
4
+ miniprofiler (0.1.7.4)
5
5
  rack (>= 1.1.3)
6
6
 
7
7
  GEM
data/README.md CHANGED
@@ -1,12 +1,10 @@
1
1
  # NOTE FOR THIS GEM FORK
2
2
 
3
- This is a fork the Ruby folder of https://github.com/SamSaffron/MiniProfiler which includes some quick fixes to make the original rack-mini-profiler gem a little more usable. I will consolidate any useful changes here into pull requests for the original repo.
3
+ This is a fork the Ruby folder of https://github.com/SamSaffron/MiniProfiler which includes some quick fixes to make the original rack-mini-profiler gem a little more usable. I will keep in in sync with Ruby related development from the original repo and consolidate any useful changes here into pull requests for the original repo
4
4
 
5
- * Add `gem 'miniprofiler'` to your Gemfile (install of 'rack-mini-profiler')
5
+ * Add `gem 'miniprofiler', require: 'rack-mini-profiler'` to your Gemfile (install of `gem 'rack-mini-profiler'`)
6
6
  * `miniprofiler`'s version uses `x.y.z.t` syntax in order to more easily sync with `rack-mini-profiler`'s `x.y.z` SemVer versioning. I will increase `t` whenever I make a patch
7
- * This gem fork will work in staging, not just development and production
8
- * Gem release date will be correct (as of now 'rack-mini-profiler' hardcodes the release date to be 04/02/2012, which is very confusing: https://rubygems.org/gems/rack-mini-profiler -- I will report to them)
9
- * Allow turning off loading jquery if the app already uses jquery
7
+ * Note to use MiniProfiler outside development and production env in Rails, set `Rack::MiniProfiler.config.pre_authorize_cb = lambda {|env| true }` in an initializer file in Rails. I recommend wrapping all Rack::MiniProfiler calls under your env check. E.g. `if %w(development staging).include?(Rails.env)`
10
8
  * More to come
11
9
 
12
10
  # Original README below:
data/Rakefile CHANGED
@@ -36,5 +36,6 @@ task :copy_files do
36
36
  `cp -f #{path}/list.js lib/html/list.js`
37
37
  `cp -f #{path}/list.tmpl lib/html/list.tmpl`
38
38
  `cp -f #{path}/include.partial.html lib/html/profile_handler.js`
39
+ `cp -f #{path}/share.html lib/html/share.html`
39
40
  end
40
41
 
@@ -1,62 +1,62 @@
1
- <script type="text/javascript">
2
- (function(){{
3
- var init = function() {{
4
- var load = function(s,f){{
5
- var sc = document.createElement('script');
6
- sc.async = 'async';
7
- sc.type = 'text/javascript';
8
- sc.src = s;
9
- var l = false;
10
- sc.onload = sc.onreadystatechange = function(_, abort) {{
11
- if (!l && (!sc.readyState || /loaded|complete/.test(sc.readyState))) {{
12
- if (!abort){{l=true; f();}}
13
- }}
14
- }};
1
+ <script type="text/javascript">
2
+ (function(){{
3
+ var init = function() {{
4
+ var load = function(s,f){{
5
+ var sc = document.createElement('script');
6
+ sc.async = 'async';
7
+ sc.type = 'text/javascript';
8
+ sc.src = s;
9
+ var l = false;
10
+ sc.onload = sc.onreadystatechange = function(_, abort) {{
11
+ if (!l && (!sc.readyState || /loaded|complete/.test(sc.readyState))) {{
12
+ if (!abort){{l=true; f();}}
13
+ }}
14
+ }};
15
15
 
16
- document.getElementsByTagName('head')[0].appendChild(sc);
17
- }};
18
-
19
- var initMp = function(){{
20
- load('{path}includes.js?v={version}',function(){{
21
- MiniProfiler.init({{
22
- ids: {ids},
23
- path: '{path}',
24
- version: '{version}',
25
- renderPosition: '{position}',
26
- showTrivial: {showTrivial},
27
- showChildrenTime: {showChildren},
28
- maxTracesToShow: {maxTracesToShow},
29
- showControls: {showControls},
30
- currentId: '{currentId}',
31
- authorized: {authorized}
32
- }});
33
- }});
34
- }};
35
- if ({useExistingjQuery}) {{
36
- jQueryMP = jQuery;
37
- initMp();
38
- }} else {{
39
- load('{path}jquery.1.7.1.js?v={version}', initMp);
40
- }}
41
-
42
- }};
16
+ document.getElementsByTagName('head')[0].appendChild(sc);
17
+ }};
43
18
 
44
- var w = 0;
45
- var f = false;
46
- var deferInit = function(){{
47
- if (f) return;
48
- if (window.performance && window.performance.timing && window.performance.timing.loadEventEnd == 0 && w < 10000){{
49
- setTimeout(deferInit, 100);
50
- w += 100;
51
- }} else {{
52
- f = true;
53
- init();
54
- }}
55
- }};
56
- if (document.addEventListener) {{
57
- document.addEventListener('DOMContentLoaded',deferInit);
58
- }}
59
- var o = window.onload;
60
- window.onload = function(){{if(o)o; deferInit()}};
61
- }})();
62
- </script>
19
+ var initMp = function(){{
20
+ load('{path}includes.js?v={version}',function(){{
21
+ MiniProfiler.init({{
22
+ ids: {ids},
23
+ path: '{path}',
24
+ version: '{version}',
25
+ renderPosition: '{position}',
26
+ showTrivial: {showTrivial},
27
+ showChildrenTime: {showChildren},
28
+ maxTracesToShow: {maxTracesToShow},
29
+ showControls: {showControls},
30
+ currentId: '{currentId}',
31
+ authorized: {authorized}
32
+ }});
33
+ }});
34
+ }};
35
+ if ({useExistingjQuery} && typeof(jQuery) === "function") {{
36
+ jQueryMP = jQuery;
37
+ initMp();
38
+ }} else {{
39
+ load('{path}jquery.1.7.1.js?v={version}', initMp);
40
+ }}
41
+
42
+ }};
43
+
44
+ var w = 0;
45
+ var f = false;
46
+ var deferInit = function(){{
47
+ if (f) return;
48
+ if (window.performance && window.performance.timing && window.performance.timing.loadEventEnd == 0 && w < 10000){{
49
+ setTimeout(deferInit, 100);
50
+ w += 100;
51
+ }} else {{
52
+ f = true;
53
+ init();
54
+ }}
55
+ }};
56
+ if (document.addEventListener) {{
57
+ document.addEventListener('DOMContentLoaded',deferInit);
58
+ }}
59
+ var o = window.onload;
60
+ window.onload = function(){{if(o)o; deferInit()}};
61
+ }})();
62
+ </script>
@@ -1,62 +1,62 @@
1
- <script type="text/javascript">
2
- (function(){{
3
- var init = function() {{
4
- var load = function(s,f){{
5
- var sc = document.createElement('script');
6
- sc.async = 'async';
7
- sc.type = 'text/javascript';
8
- sc.src = s;
9
- var l = false;
10
- sc.onload = sc.onreadystatechange = function(_, abort) {{
11
- if (!l && (!sc.readyState || /loaded|complete/.test(sc.readyState))) {{
12
- if (!abort){{l=true; f();}}
13
- }}
14
- }};
1
+ <script type="text/javascript">
2
+ (function(){{
3
+ var init = function() {{
4
+ var load = function(s,f){{
5
+ var sc = document.createElement('script');
6
+ sc.async = 'async';
7
+ sc.type = 'text/javascript';
8
+ sc.src = s;
9
+ var l = false;
10
+ sc.onload = sc.onreadystatechange = function(_, abort) {{
11
+ if (!l && (!sc.readyState || /loaded|complete/.test(sc.readyState))) {{
12
+ if (!abort){{l=true; f();}}
13
+ }}
14
+ }};
15
15
 
16
- document.getElementsByTagName('head')[0].appendChild(sc);
17
- }};
18
-
19
- var initMp = function(){{
20
- load('{path}includes.js?v={version}',function(){{
21
- MiniProfiler.init({{
22
- ids: {ids},
23
- path: '{path}',
24
- version: '{version}',
25
- renderPosition: '{position}',
26
- showTrivial: {showTrivial},
27
- showChildrenTime: {showChildren},
28
- maxTracesToShow: {maxTracesToShow},
29
- showControls: {showControls},
30
- currentId: '{currentId}',
31
- authorized: {authorized}
32
- }});
33
- }});
34
- }};
35
- if ({useExistingjQuery}) {{
36
- jQueryMP = jQuery;
37
- initMp();
38
- }} else {{
39
- load('{path}jquery.1.7.1.js?v={version}', initMp);
40
- }}
41
-
42
- }};
16
+ document.getElementsByTagName('head')[0].appendChild(sc);
17
+ }};
43
18
 
44
- var w = 0;
45
- var f = false;
46
- var deferInit = function(){{
47
- if (f) return;
48
- if (window.performance && window.performance.timing && window.performance.timing.loadEventEnd == 0 && w < 10000){{
49
- setTimeout(deferInit, 100);
50
- w += 100;
51
- }} else {{
52
- f = true;
53
- init();
54
- }}
55
- }};
56
- if (document.addEventListener) {{
57
- document.addEventListener('DOMContentLoaded',deferInit);
58
- }}
59
- var o = window.onload;
60
- window.onload = function(){{if(o)o; deferInit()}};
61
- }})();
62
- </script>
19
+ var initMp = function(){{
20
+ load('{path}includes.js?v={version}',function(){{
21
+ MiniProfiler.init({{
22
+ ids: {ids},
23
+ path: '{path}',
24
+ version: '{version}',
25
+ renderPosition: '{position}',
26
+ showTrivial: {showTrivial},
27
+ showChildrenTime: {showChildren},
28
+ maxTracesToShow: {maxTracesToShow},
29
+ showControls: {showControls},
30
+ currentId: '{currentId}',
31
+ authorized: {authorized}
32
+ }});
33
+ }});
34
+ }};
35
+ if ({useExistingjQuery} && typeof(jQuery) === "function") {{
36
+ jQueryMP = jQuery;
37
+ initMp();
38
+ }} else {{
39
+ load('{path}jquery.1.7.1.js?v={version}', initMp);
40
+ }}
41
+
42
+ }};
43
+
44
+ var w = 0;
45
+ var f = false;
46
+ var deferInit = function(){{
47
+ if (f) return;
48
+ if (window.performance && window.performance.timing && window.performance.timing.loadEventEnd == 0 && w < 10000){{
49
+ setTimeout(deferInit, 100);
50
+ w += 100;
51
+ }} else {{
52
+ f = true;
53
+ init();
54
+ }}
55
+ }};
56
+ if (document.addEventListener) {{
57
+ document.addEventListener('DOMContentLoaded',deferInit);
58
+ }}
59
+ var o = window.onload;
60
+ window.onload = function(){{if(o)o; deferInit()}};
61
+ }})();
62
+ </script>
@@ -0,0 +1,11 @@
1
+ <html>
2
+ <head>
3
+ <title>{name} ({duration} ms) - Profiling Results</title>
4
+ <script type='text/javascript' src='{path}jquery.1.7.1.js?v={version}'></script>
5
+ <script type='text/javascript'> var profiler = {json}; </script>
6
+ {includes}
7
+ </head>
8
+ <body>
9
+ <div class='profiler-result-full'></div>
10
+ </body>
11
+ </html>
@@ -17,12 +17,12 @@ require 'mini_profiler/context'
17
17
 
18
18
  module Rack
19
19
 
20
- class MiniProfiler
20
+ class MiniProfiler
21
21
 
22
- VERSION = '104'.freeze
22
+ VERSION = '104'.freeze
23
+
24
+ class << self
23
25
 
24
- class << self
25
-
26
26
  include Rack::MiniProfiler::ProfilingMethods
27
27
 
28
28
  def generate_id
@@ -42,7 +42,7 @@ module Rack
42
42
  return @share_template unless @share_template.nil?
43
43
  @share_template = ::File.read(::File.expand_path("../html/share.html", ::File.dirname(__FILE__)))
44
44
  end
45
-
45
+
46
46
  def current
47
47
  Thread.current[:mini_profiler_private]
48
48
  end
@@ -92,70 +92,70 @@ module Rack
92
92
  end
93
93
  end
94
94
 
95
- #
96
- # options:
97
- # :auto_inject - should script be automatically injected on every html page (not xhr)
98
- def initialize(app, config = nil)
95
+ #
96
+ # options:
97
+ # :auto_inject - should script be automatically injected on every html page (not xhr)
98
+ def initialize(app, config = nil)
99
99
  MiniProfiler.config.merge!(config)
100
- @config = MiniProfiler.config
101
- @app = app
102
- @config.base_url_path << "/" unless @config.base_url_path.end_with? "/"
100
+ @config = MiniProfiler.config
101
+ @app = app
102
+ @config.base_url_path << "/" unless @config.base_url_path.end_with? "/"
103
103
  unless @config.storage_instance
104
104
  @storage = @config.storage_instance = @config.storage.new(@config.storage_options)
105
105
  end
106
- end
107
-
106
+ end
107
+
108
108
  def user(env)
109
109
  @config.user_provider.call(env)
110
110
  end
111
111
 
112
- def serve_results(env)
113
- request = Rack::Request.new(env)
112
+ def serve_results(env)
113
+ request = Rack::Request.new(env)
114
114
  id = request['id']
115
- page_struct = @storage.load(id)
115
+ page_struct = @storage.load(id)
116
116
  unless page_struct
117
- @storage.set_viewed(user(env), id)
118
- return [404, {}, ["Request not found: #{request['id']} - user #{user(env)}"]]
117
+ @storage.set_viewed(user(env), id)
118
+ return [404, {}, ["Request not found: #{request['id']} - user #{user(env)}"]]
119
+ end
120
+ unless page_struct['HasUserViewed']
121
+ page_struct['ClientTimings'].init_from_form_data(env, page_struct)
122
+ page_struct['HasUserViewed'] = true
123
+ @storage.save(page_struct)
124
+ @storage.set_viewed(user(env), id)
119
125
  end
120
- unless page_struct['HasUserViewed']
121
- page_struct['ClientTimings'].init_from_form_data(env, page_struct)
122
- page_struct['HasUserViewed'] = true
123
- @storage.save(page_struct)
124
- @storage.set_viewed(user(env), id)
125
- end
126
126
 
127
127
  result_json = page_struct.to_json
128
128
  # If we're an XMLHttpRequest, serve up the contents as JSON
129
129
  if request.xhr?
130
- [200, { 'Content-Type' => 'application/json'}, [result_json]]
130
+ [200, { 'Content-Type' => 'application/json'}, [result_json]]
131
131
  else
132
132
 
133
133
  # Otherwise give the HTML back
134
- html = MiniProfiler.share_template.dup
135
- html.gsub!(/\{path\}/, @config.base_url_path)
136
- html.gsub!(/\{version\}/, MiniProfiler::VERSION)
134
+ html = MiniProfiler.share_template.dup
135
+ html.gsub!(/\{path\}/, @config.base_url_path)
136
+ html.gsub!(/\{version\}/, MiniProfiler::VERSION)
137
137
  html.gsub!(/\{json\}/, result_json)
138
138
  html.gsub!(/\{includes\}/, get_profile_script(env))
139
139
  html.gsub!(/\{name\}/, page_struct['Name'])
140
140
  html.gsub!(/\{duration\}/, page_struct.duration_ms.round(1).to_s)
141
-
141
+
142
142
  [200, {'Content-Type' => 'text/html'}, [html]]
143
143
  end
144
144
 
145
- end
145
+ end
146
+
147
+ def serve_html(env)
148
+ file_name = env['PATH_INFO'][(@config.base_url_path.length)..1000]
149
+ return serve_results(env) if file_name.eql?('results')
150
+ full_path = ::File.expand_path("../html/#{file_name}", ::File.dirname(__FILE__))
151
+ return [404, {}, ["Not found"]] unless ::File.exists? full_path
152
+ f = Rack::File.new nil
153
+ f.path = full_path
154
+ f.cache_control = "max-age:86400"
155
+ f.serving env
156
+ end
146
157
 
147
- def serve_html(env)
148
- file_name = env['PATH_INFO'][(@config.base_url_path.length)..1000]
149
- return serve_results(env) if file_name.eql?('results')
150
- full_path = ::File.expand_path("../html/#{file_name}", ::File.dirname(__FILE__))
151
- return [404, {}, ["Not found"]] unless ::File.exists? full_path
152
- f = Rack::File.new nil
153
- f.path = full_path
154
- f.cache_control = "max-age:86400"
155
- f.serving env
156
- end
157
158
 
158
-
159
159
  def current
160
160
  MiniProfiler.current
161
161
  end
@@ -170,26 +170,26 @@ module Rack
170
170
  end
171
171
 
172
172
 
173
- def call(env)
173
+ def call(env)
174
174
  status = headers = body = nil
175
175
  path = env['PATH_INFO']
176
176
 
177
177
  skip_it = (@config.pre_authorize_cb && !@config.pre_authorize_cb.call(env)) ||
178
- (@config.skip_paths && @config.skip_paths.any?{ |p| path[0,p.length] == p}) ||
179
- env["QUERY_STRING"] =~ /pp=skip/
180
-
178
+ (@config.skip_paths && @config.skip_paths.any?{ |p| path[0,p.length] == p}) ||
179
+ env["QUERY_STRING"] =~ /pp=skip/
180
+
181
181
  has_profiling_cookie = MiniProfiler.has_profiling_cookie?(env)
182
-
182
+
183
183
  if skip_it || (@config.authorization_mode == :whitelist && !has_profiling_cookie)
184
184
  status,headers,body = @app.call(env)
185
- if !skip_it && @config.authorization_mode == :whitelist && !has_profiling_cookie && MiniProfiler.request_authorized?
186
- MiniProfiler.set_profiling_cookie(headers)
185
+ if !skip_it && @config.authorization_mode == :whitelist && !has_profiling_cookie && MiniProfiler.request_authorized?
186
+ MiniProfiler.set_profiling_cookie(headers)
187
187
  end
188
188
  return [status,headers,body]
189
189
  end
190
190
 
191
191
  # handle all /mini-profiler requests here
192
- return serve_html(env) if env['PATH_INFO'].start_with? @config.base_url_path
192
+ return serve_html(env) if env['PATH_INFO'].start_with? @config.base_url_path
193
193
 
194
194
  MiniProfiler.create_current(env, @config)
195
195
  MiniProfiler.deauthorize_request if @config.authorization_mode == :whitelist
@@ -211,28 +211,28 @@ module Rack
211
211
  require 'stacktrace' rescue nil
212
212
  if !t.respond_to? :stacktrace
213
213
  missing_stacktrace = true
214
- quit_sampler = true
214
+ quit_sampler = true
215
215
  return
216
216
  end
217
- i = 10000 # for sanity never grab more than 10k samples
217
+ i = 10000 # for sanity never grab more than 10k samples
218
218
  while i > 0
219
219
  break if done_sampling
220
220
  i -= 1
221
221
  backtraces << t.stacktrace
222
222
  sleep 0.001
223
223
  end
224
- ensure
225
- quit_sampler = true
226
- end
224
+ ensure
225
+ quit_sampler = true
226
+ end
227
227
  }
228
228
  end
229
229
 
230
- status, headers, body = nil
231
- start = Time.now
232
- begin
230
+ status, headers, body = nil
231
+ start = Time.now
232
+ begin
233
233
  status,headers,body = @app.call(env)
234
234
  ensure
235
- if backtraces
235
+ if backtraces
236
236
  done_sampling = true
237
237
  sleep 0.001 until quit_sampler
238
238
  end
@@ -243,9 +243,9 @@ module Rack
243
243
  MiniProfiler.remove_profiling_cookie(headers)
244
244
  skip_it = true
245
245
  end
246
-
246
+
247
247
  return [status,headers,body] if skip_it
248
-
248
+
249
249
  # we must do this here, otherwise current[:discard] is not being properly treated
250
250
  if env["QUERY_STRING"] =~ /pp=env/
251
251
  body.close if body.respond_to? :close
@@ -256,51 +256,51 @@ module Rack
256
256
  body.close if body.respond_to? :close
257
257
  return help
258
258
  end
259
-
259
+
260
260
  page_struct = current.page_struct
261
- page_struct['Root'].record_time((Time.now - start) * 1000)
261
+ page_struct['Root'].record_time((Time.now - start) * 1000)
262
262
 
263
263
  if backtraces
264
264
  body.close if body.respond_to? :close
265
265
  return help(:stacktrace) if missing_stacktrace
266
266
  return analyze(backtraces, page_struct)
267
267
  end
268
-
268
+
269
269
 
270
270
  # no matter what it is, it should be unviewed, otherwise we will miss POST
271
- @storage.set_unviewed(user(env), page_struct['Id'])
272
- @storage.save(page_struct)
273
-
271
+ @storage.set_unviewed(user(env), page_struct['Id'])
272
+ @storage.save(page_struct)
273
+
274
274
  # inject headers, script
275
- if status == 200
276
-
277
- # inject header
275
+ if status == 200
276
+
277
+ # inject header
278
278
  if headers.is_a? Hash
279
279
  headers['X-MiniProfiler-Ids'] = ids_json(env)
280
280
  end
281
281
 
282
- # inject script
283
- if current.inject_js \
284
- && headers.has_key?('Content-Type') \
285
- && !headers['Content-Type'].match(/text\/html/).nil? then
286
- body = MiniProfiler::BodyAddProxy.new(body, self.get_profile_script(env))
287
- end
288
- end
282
+ # inject script
283
+ if current.inject_js \
284
+ && headers.has_key?('Content-Type') \
285
+ && !headers['Content-Type'].match(/text\/html/).nil? then
286
+ body = MiniProfiler::BodyAddProxy.new(body, self.get_profile_script(env))
287
+ end
288
+ end
289
289
 
290
290
  # mini profiler is meddling with stuff, we can not cache cause we will get incorrect data
291
291
  # Rack::ETag has already inserted some nonesense in the chain
292
292
  headers.delete('ETag')
293
293
  headers.delete('Date')
294
294
  headers['Cache-Control'] = 'must-revalidate, private, max-age=0'
295
- [status, headers, body]
295
+ [status, headers, body]
296
296
  ensure
297
297
  # Make sure this always happens
298
298
  current = nil
299
- end
299
+ end
300
300
 
301
301
  def dump_env(env)
302
302
  headers = {'Content-Type' => 'text/plain'}
303
- body = ""
303
+ body = ""
304
304
  env.each do |k,v|
305
305
  body << "#{k}: #{v}\n"
306
306
  end
@@ -317,11 +317,11 @@ module Rack
317
317
  pp=no-backtrace : don't collect stack traces from all the SQL executed
318
318
  pp=full-backtrace : enable full backtrace for SQL executed
319
319
  pp=sample : sample stack traces and return a report isolating heavy usage (requires the stacktrace gem)
320
- "
320
+ "
321
321
  if (category == :stacktrace)
322
322
  body = "pp=stacktrace requires the stacktrace gem - add gem 'stacktrace' to your Gemfile"
323
323
  end
324
-
324
+
325
325
  [200, headers, [body]]
326
326
  end
327
327
 
@@ -331,7 +331,7 @@ module Rack
331
331
 
332
332
  seen = {}
333
333
  fulldump = ""
334
- traces.each do |trace|
334
+ traces.each do |trace|
335
335
  fulldump << "\n\n"
336
336
  distinct = {}
337
337
  trace.each do |frame|
@@ -351,7 +351,7 @@ module Rack
351
351
  body << "#{name} x #{count}\n"
352
352
  end
353
353
  end
354
-
354
+
355
355
  body << "\n\n\nRaw traces \n"
356
356
  body << fulldump
357
357
 
@@ -363,43 +363,43 @@ module Rack
363
363
  ::JSON.generate(ids.uniq)
364
364
  end
365
365
 
366
- # get_profile_script returns script to be injected inside current html page
367
- # By default, profile_script is appended to the end of all html requests automatically.
368
- # Calling get_profile_script cancels automatic append for the current page
369
- # Use it when:
370
- # * you have disabled auto append behaviour throught :auto_inject => false flag
371
- # * you do not want script to be automatically appended for the current page. You can also call cancel_auto_inject
372
- def get_profile_script(env)
373
- ids = ids_json(env)
374
- path = @config.base_url_path
375
- version = MiniProfiler::VERSION
376
- position = @config.position
377
- showTrivial = false
378
- showChildren = false
379
- maxTracesToShow = 10
380
- showControls = false
381
- currentId = current.page_struct["Id"]
382
- authorized = true
383
- useExistingjQuery = @config.use_existing_jquery
384
- # TODO : cache this snippet
385
- script = IO.read(::File.expand_path('../html/profile_handler.js', ::File.dirname(__FILE__)))
386
- # replace the variables
387
- [:ids, :path, :version, :position, :showTrivial, :showChildren, :maxTracesToShow, :showControls, :currentId, :authorized, :useExistingjQuery].each do |v|
388
- regex = Regexp.new("\\{#{v.to_s}\\}")
389
- script.gsub!(regex, eval(v.to_s).to_s)
390
- end
391
- # replace the '{{' and '}}''
392
- script.gsub!(/\{\{/, '{').gsub!(/\}\}/, '}')
393
- current.inject_js = false
394
- script
395
- end
396
-
397
- # cancels automatic injection of profile script for the current page
398
- def cancel_auto_inject(env)
399
- current.inject_js = false
400
- end
401
-
402
- end
366
+ # get_profile_script returns script to be injected inside current html page
367
+ # By default, profile_script is appended to the end of all html requests automatically.
368
+ # Calling get_profile_script cancels automatic append for the current page
369
+ # Use it when:
370
+ # * you have disabled auto append behaviour throught :auto_inject => false flag
371
+ # * you do not want script to be automatically appended for the current page. You can also call cancel_auto_inject
372
+ def get_profile_script(env)
373
+ ids = ids_json(env)
374
+ path = @config.base_url_path
375
+ version = MiniProfiler::VERSION
376
+ position = @config.position
377
+ showTrivial = false
378
+ showChildren = false
379
+ maxTracesToShow = 10
380
+ showControls = false
381
+ currentId = current.page_struct["Id"]
382
+ authorized = true
383
+ useExistingjQuery = @config.use_existing_jquery
384
+ # TODO : cache this snippet
385
+ script = IO.read(::File.expand_path('../html/profile_handler.js', ::File.dirname(__FILE__)))
386
+ # replace the variables
387
+ [:ids, :path, :version, :position, :showTrivial, :showChildren, :maxTracesToShow, :showControls, :currentId, :authorized, :useExistingjQuery].each do |v|
388
+ regex = Regexp.new("\\{#{v.to_s}\\}")
389
+ script.gsub!(regex, eval(v.to_s).to_s)
390
+ end
391
+ # replace the '{{' and '}}''
392
+ script.gsub!(/\{\{/, '{').gsub!(/\}\}/, '}')
393
+ current.inject_js = false
394
+ script
395
+ end
396
+
397
+ # cancels automatic injection of profile script for the current page
398
+ def cancel_auto_inject(env)
399
+ current.inject_js = false
400
+ end
401
+
402
+ end
403
403
 
404
404
  end
405
405
 
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "miniprofiler"
3
- s.version = "0.1.7.3"
3
+ s.version = "0.1.7.4"
4
4
  s.summary = "Profiles loading speed for rack applications."
5
5
  s.authors = ["Aleks Totic","Sam Saffron", "Robin Ward"]
6
6
  s.description = "Page loading speed displayed on every page. Optimize while you develop, performance is a feature."
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: miniprofiler
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.7.3
4
+ version: 0.1.7.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -15,7 +15,7 @@ date: 2012-07-20 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: rack
18
- requirement: &2165244220 !ruby/object:Gem::Requirement
18
+ requirement: &2157245440 !ruby/object:Gem::Requirement
19
19
  none: false
20
20
  requirements:
21
21
  - - ! '>='
@@ -23,10 +23,10 @@ dependencies:
23
23
  version: 1.1.3
24
24
  type: :runtime
25
25
  prerelease: false
26
- version_requirements: *2165244220
26
+ version_requirements: *2157245440
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
- requirement: &2165198480 !ruby/object:Gem::Requirement
29
+ requirement: &2157244860 !ruby/object:Gem::Requirement
30
30
  none: false
31
31
  requirements:
32
32
  - - ! '>='
@@ -34,10 +34,10 @@ dependencies:
34
34
  version: '0'
35
35
  type: :development
36
36
  prerelease: false
37
- version_requirements: *2165198480
37
+ version_requirements: *2157244860
38
38
  - !ruby/object:Gem::Dependency
39
39
  name: rack-test
40
- requirement: &2165197760 !ruby/object:Gem::Requirement
40
+ requirement: &2157212960 !ruby/object:Gem::Requirement
41
41
  none: false
42
42
  requirements:
43
43
  - - ! '>='
@@ -45,10 +45,10 @@ dependencies:
45
45
  version: '0'
46
46
  type: :development
47
47
  prerelease: false
48
- version_requirements: *2165197760
48
+ version_requirements: *2157212960
49
49
  - !ruby/object:Gem::Dependency
50
50
  name: activerecord
51
- requirement: &2165196320 !ruby/object:Gem::Requirement
51
+ requirement: &2157212260 !ruby/object:Gem::Requirement
52
52
  none: false
53
53
  requirements:
54
54
  - - ~>
@@ -56,7 +56,7 @@ dependencies:
56
56
  version: '3.0'
57
57
  type: :development
58
58
  prerelease: false
59
- version_requirements: *2165196320
59
+ version_requirements: *2157212260
60
60
  description: Page loading speed displayed on every page. Optimize while you develop,
61
61
  performance is a feature.
62
62
  email: sam.saffron@gmail.com
@@ -95,6 +95,7 @@ files:
95
95
  - lib/html/list.js
96
96
  - lib/html/list.tmpl
97
97
  - lib/html/profile_handler.js
98
+ - lib/html/share.html
98
99
  - lib/mini_profiler/body_add_proxy.rb
99
100
  - lib/mini_profiler/client_timer_struct.rb
100
101
  - lib/mini_profiler/config.rb
@@ -143,7 +144,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
143
144
  version: '0'
144
145
  segments:
145
146
  - 0
146
- hash: -327493845862481263
147
+ hash: 349144657699617797
147
148
  required_rubygems_version: !ruby/object:Gem::Requirement
148
149
  none: false
149
150
  requirements:
@@ -152,7 +153,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
152
153
  version: '0'
153
154
  segments:
154
155
  - 0
155
- hash: -327493845862481263
156
+ hash: 349144657699617797
156
157
  requirements: []
157
158
  rubyforge_project:
158
159
  rubygems_version: 1.8.17