rack-mini-profiler 0.9.2 → 0.9.3

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of rack-mini-profiler might be problematic. Click here for more details.

Files changed (41) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +17 -3
  3. data/lib/html/includes.css +15 -4
  4. data/lib/html/includes.js +93 -58
  5. data/lib/html/includes.less +21 -5
  6. data/lib/html/includes.tmpl +49 -49
  7. data/lib/html/list.tmpl +8 -8
  8. data/lib/mini_profiler/asset_version.rb +5 -0
  9. data/lib/mini_profiler/client_settings.rb +3 -3
  10. data/lib/mini_profiler/config.rb +11 -11
  11. data/lib/mini_profiler/gc_profiler.rb +10 -10
  12. data/lib/mini_profiler/profiler.rb +49 -71
  13. data/lib/mini_profiler/profiling_methods.rb +15 -17
  14. data/lib/mini_profiler/storage/file_store.rb +4 -4
  15. data/lib/mini_profiler/storage/memcache_store.rb +5 -7
  16. data/lib/mini_profiler/storage/memory_store.rb +56 -27
  17. data/lib/mini_profiler/storage/redis_store.rb +19 -11
  18. data/lib/mini_profiler/timer_struct/base.rb +33 -0
  19. data/lib/mini_profiler/timer_struct/client.rb +89 -0
  20. data/lib/mini_profiler/timer_struct/custom.rb +22 -0
  21. data/lib/mini_profiler/timer_struct/page.rb +62 -0
  22. data/lib/mini_profiler/timer_struct/request.rb +126 -0
  23. data/lib/mini_profiler/timer_struct/sql.rb +59 -0
  24. data/lib/mini_profiler/version.rb +2 -2
  25. data/lib/patches/db/activerecord.rb +42 -0
  26. data/lib/patches/db/moped.rb +12 -0
  27. data/lib/patches/db/mysql2.rb +30 -0
  28. data/lib/patches/db/pg.rb +104 -0
  29. data/lib/patches/db/plucky.rb +47 -0
  30. data/lib/patches/db/rsolr.rb +24 -0
  31. data/lib/patches/db/sequel.rb +10 -0
  32. data/lib/patches/sql_patches.rb +17 -255
  33. data/lib/rack-mini-profiler.rb +28 -0
  34. data/rack-mini-profiler.gemspec +6 -2
  35. metadata +16 -8
  36. data/lib/mini_profiler/client_timer_struct.rb +0 -78
  37. data/lib/mini_profiler/custom_timer_struct.rb +0 -22
  38. data/lib/mini_profiler/page_timer_struct.rb +0 -58
  39. data/lib/mini_profiler/request_timer_struct.rb +0 -115
  40. data/lib/mini_profiler/sql_timer_struct.rb +0 -58
  41. data/lib/mini_profiler/timer_struct.rb +0 -33
@@ -19,14 +19,14 @@
19
19
  <script id="rowTemplate" type="text/x-jquery-tmpl">
20
20
  <tr>
21
21
  <td>
22
- <a href="${MiniProfiler.path}results?id=${Id}">${Name}</a></td>
23
- <td class="date">${MiniProfiler.renderDate(Started)}</td>
24
- <td class="time">${DurationMillisecondsInSql}</td>
25
- <td class="time">${DurationMilliseconds}</td>
26
- {{if ClientTimings}}
27
- <td class="time">${MiniProfiler.getClientTimingByName(ClientTimings,"Request").Start}</td>
28
- <td class="time">${MiniProfiler.getClientTimingByName(ClientTimings,"Response").Start}</td>
29
- <td class="time">${MiniProfiler.getClientTimingByName(ClientTimings,"Dom Complete").Start}</td>
22
+ <a href="${MiniProfiler.path}results?id=${id}">${name}</a></td>
23
+ <td class="date">${MiniProfiler.renderDate(started)}</td>
24
+ <td class="time">${duration_milliseconds_in_sql}</td>
25
+ <td class="time">${duration_milliseconds}</td>
26
+ {{if client_timings}}
27
+ <td class="time">${MiniProfiler.getClientTimingByName(client_timings,"Request").start}</td>
28
+ <td class="time">${MiniProfiler.getClientTimingByName(client_timings,"Response").start}</td>
29
+ <td class="time">${MiniProfiler.getClientTimingByName(client_timings,"Dom Complete").start}</td>
30
30
  {{else}}
31
31
  <td colspan="3"></td>
32
32
  {{/if}}
@@ -0,0 +1,5 @@
1
+ module Rack
2
+ class MiniProfiler
3
+ ASSET_VERSION = '9db1f8db18400644bd5c7449e5295620'.freeze
4
+ end
5
+ end
@@ -5,8 +5,8 @@ module Rack
5
5
  COOKIE_NAME = "__profilin"
6
6
 
7
7
  BACKTRACE_DEFAULT = nil
8
- BACKTRACE_FULL = 1
9
- BACKTRACE_NONE = 2
8
+ BACKTRACE_FULL = 1
9
+ BACKTRACE_NONE = 2
10
10
 
11
11
  attr_accessor :disable_profiling
12
12
  attr_accessor :backtrace_level
@@ -30,7 +30,7 @@ module Rack
30
30
  def write!(headers)
31
31
  if @orig_disable_profiling != @disable_profiling || @orig_backtrace_level != @backtrace_level || @cookie.nil?
32
32
  settings = {"p" => "t" }
33
- settings["dp"] = "t" if @disable_profiling
33
+ settings["dp"] = "t" if @disable_profiling
34
34
  settings["bt"] = @backtrace_level if @backtrace_level
35
35
  settings_string = settings.map{|k,v| "#{k}=#{v}"}.join(",")
36
36
  Rack::Utils.set_cookie_header!(headers, COOKIE_NAME, :value => settings_string, :path => '/')
@@ -13,7 +13,7 @@ module Rack
13
13
  end
14
14
 
15
15
  attr_accessor :authorization_mode, :auto_inject, :backtrace_ignores, :backtrace_includes, :backtrace_remove,
16
- :backtrace_threshold_ms, :base_url_path, :enabled, :flamegraph_sample_rate, :logger, :position,
16
+ :backtrace_threshold_ms, :base_url_path, :disable_caching, :enabled, :flamegraph_sample_rate, :logger, :position,
17
17
  :pre_authorize_cb, :skip_paths, :skip_schema_queries, :start_hidden, :storage, :storage_failure,
18
18
  :storage_instance, :storage_options, :toggle_shortcut, :user_provider
19
19
 
@@ -22,20 +22,20 @@ module Rack
22
22
 
23
23
  def self.default
24
24
  new.instance_eval {
25
- @auto_inject = true # automatically inject on every html page
26
- @base_url_path = "/mini-profiler-resources/"
27
-
25
+ @auto_inject = true # automatically inject on every html page
26
+ @base_url_path = "/mini-profiler-resources/"
27
+ @disable_caching = true
28
28
  # called prior to rack chain, to ensure we are allowed to profile
29
29
  @pre_authorize_cb = lambda {|env| true}
30
30
 
31
31
  # called after rack chain, to ensure we are REALLY allowed to profile
32
- @position = 'left' # Where it is displayed
33
- @skip_schema_queries = false
34
- @storage = MiniProfiler::MemoryStore
35
- @user_provider = Proc.new{|env| Rack::Request.new(env).ip}
36
- @authorization_mode = :allow_all
37
- @toggle_shortcut = 'Alt+P'
38
- @start_hidden = false
32
+ @position = 'left' # Where it is displayed
33
+ @skip_schema_queries = false
34
+ @storage = MiniProfiler::MemoryStore
35
+ @user_provider = Proc.new{|env| Rack::Request.new(env).ip}
36
+ @authorization_mode = :allow_all
37
+ @toggle_shortcut = 'Alt+P'
38
+ @start_hidden = false
39
39
  @backtrace_threshold_ms = 0
40
40
  @flamegraph_sample_rate = 0.5
41
41
  @storage_failure = Proc.new do |exception|
@@ -37,7 +37,7 @@ class Rack::MiniProfiler::GCProfiler
37
37
  result
38
38
  end
39
39
 
40
- def diff_object_stats(before,after)
40
+ def diff_object_stats(before, after)
41
41
  diff = {}
42
42
  after.each do |k,v|
43
43
  diff[k] = v - (before[k] || 0)
@@ -49,7 +49,7 @@ class Rack::MiniProfiler::GCProfiler
49
49
  diff
50
50
  end
51
51
 
52
- def analyze_strings(ids_before,ids_after)
52
+ def analyze_strings(ids_before, ids_after)
53
53
  result = {}
54
54
  ids_after.each do |id,_|
55
55
  obj = ObjectSpace._id2ref(id)
@@ -92,13 +92,13 @@ class Rack::MiniProfiler::GCProfiler
92
92
  [objects,memory_allocated]
93
93
  end
94
94
 
95
- def profile_gc_time(app,env)
95
+ def profile_gc_time(app, env)
96
96
  body = []
97
97
 
98
98
  begin
99
99
  GC::Profiler.clear
100
100
  prev_profiler_state = GC::Profiler.enabled?
101
- prev_gc_state = GC.enable
101
+ prev_gc_state = GC.enable
102
102
  GC::Profiler.enable
103
103
  b = app.call(env)[2]
104
104
  b.close if b.respond_to? :close
@@ -112,7 +112,7 @@ class Rack::MiniProfiler::GCProfiler
112
112
  return [200, {'Content-Type' => 'text/plain'}, body]
113
113
  end
114
114
 
115
- def profile_gc(app,env)
115
+ def profile_gc(app, env)
116
116
 
117
117
  # for memsize_of
118
118
  require 'objspace'
@@ -124,17 +124,17 @@ class Rack::MiniProfiler::GCProfiler
124
124
 
125
125
  # clean up before
126
126
  GC.start
127
- stat = GC.stat
127
+ stat = GC.stat
128
128
  prev_gc_state = GC.disable
129
- stat_before = object_space_stats
130
- b = app.call(env)[2]
129
+ stat_before = object_space_stats
130
+ b = app.call(env)[2]
131
131
  b.close if b.respond_to? :close
132
132
  stat_after = object_space_stats
133
133
  # so we don't blow out on memory
134
134
  prev_gc_state ? GC.disable : GC.enable
135
135
 
136
- diff = diff_object_stats(stat_before[:stats],stat_after[:stats])
137
- string_analysis = analyze_strings(stat_before[:ids], stat_after[:ids])
136
+ diff = diff_object_stats(stat_before[:stats],stat_after[:stats])
137
+ string_analysis = analyze_strings(stat_before[:ids], stat_after[:ids])
138
138
  new_objects, memory_allocated = analyze_growth(stat_before[:ids], stat_after[:ids])
139
139
  objects_before, memory_before = analyze_initial_state(stat_before[:ids])
140
140
 
@@ -1,30 +1,5 @@
1
- require 'json'
2
- require 'timeout'
3
- require 'thread'
4
-
5
- require 'mini_profiler/version'
6
- require 'mini_profiler/page_timer_struct'
7
- require 'mini_profiler/sql_timer_struct'
8
- require 'mini_profiler/custom_timer_struct'
9
- require 'mini_profiler/client_timer_struct'
10
- require 'mini_profiler/request_timer_struct'
11
- require 'mini_profiler/storage/abstract_store'
12
- require 'mini_profiler/storage/memcache_store'
13
- require 'mini_profiler/storage/memory_store'
14
- require 'mini_profiler/storage/redis_store'
15
- require 'mini_profiler/storage/file_store'
16
- require 'mini_profiler/config'
17
- require 'mini_profiler/profiling_methods'
18
- require 'mini_profiler/context'
19
- require 'mini_profiler/client_settings'
20
- require 'mini_profiler/gc_profiler'
21
- # TODO
22
- # require 'mini_profiler/gc_profiler_ruby_head' if Gem::Version.new('2.1.0') <= Gem::Version.new(RUBY_VERSION)
23
-
24
1
  module Rack
25
-
26
2
  class MiniProfiler
27
-
28
3
  class << self
29
4
 
30
5
  include Rack::MiniProfiler::ProfilingMethods
@@ -43,8 +18,7 @@ module Rack
43
18
  end
44
19
 
45
20
  def share_template
46
- return @share_template unless @share_template.nil?
47
- @share_template = ::File.read(::File.expand_path("../html/share.html", ::File.dirname(__FILE__)))
21
+ @share_template ||= ::File.read(::File.expand_path("../html/share.html", ::File.dirname(__FILE__)))
48
22
  end
49
23
 
50
24
  def current
@@ -53,7 +27,7 @@ module Rack
53
27
 
54
28
  def current=(c)
55
29
  # we use TLS cause we need access to this from sql blocks and code blocks that have no access to env
56
- Thread.current[:mini_profiler_private]= c
30
+ Thread.current[:mini_profiler_private] = c
57
31
  end
58
32
 
59
33
  # discard existing results, don't track this request
@@ -63,10 +37,10 @@ module Rack
63
37
 
64
38
  def create_current(env={}, options={})
65
39
  # profiling the request
66
- self.current = Context.new
67
- self.current.inject_js = config.auto_inject && (!env['HTTP_X_REQUESTED_WITH'].eql? 'XMLHttpRequest')
68
- self.current.page_struct = PageTimerStruct.new(env)
69
- self.current.current_timer = current.page_struct['Root']
40
+ self.current = Context.new
41
+ self.current.inject_js = config.auto_inject && (!env['HTTP_X_REQUESTED_WITH'].eql? 'XMLHttpRequest')
42
+ self.current.page_struct = TimerStruct::Page.new(env)
43
+ self.current.current_timer = current.page_struct[:root]
70
44
  end
71
45
 
72
46
  def authorize_request
@@ -89,7 +63,7 @@ module Rack
89
63
  def initialize(app, config = nil)
90
64
  MiniProfiler.config.merge!(config)
91
65
  @config = MiniProfiler.config
92
- @app = app
66
+ @app = app
93
67
  @config.base_url_path << "/" unless @config.base_url_path.end_with? "/"
94
68
  unless @config.storage_instance
95
69
  @config.storage_instance = @config.storage.new(@config.storage_options)
@@ -102,18 +76,18 @@ module Rack
102
76
  end
103
77
 
104
78
  def serve_results(env)
105
- request = Rack::Request.new(env)
106
- id = request['id']
79
+ request = Rack::Request.new(env)
80
+ id = request[:id]
107
81
  page_struct = @storage.load(id)
108
82
  unless page_struct
109
83
  @storage.set_viewed(user(env), id)
110
- id = ERB::Util.html_escape(request['id'])
84
+ id = ERB::Util.html_escape(request['id'])
111
85
  user_info = ERB::Util.html_escape(user(env))
112
86
  return [404, {}, ["Request not found: #{id} - user #{user_info}"]]
113
87
  end
114
- unless page_struct['HasUserViewed']
115
- page_struct['ClientTimings'] = ClientTimerStruct.init_from_form_data(env, page_struct)
116
- page_struct['HasUserViewed'] = true
88
+ unless page_struct[:has_user_viewed]
89
+ page_struct[:client_timings] = TimerStruct::Client.init_from_form_data(env, page_struct)
90
+ page_struct[:has_user_viewed] = true
117
91
  @storage.save(page_struct)
118
92
  @storage.set_viewed(user(env), id)
119
93
  end
@@ -127,10 +101,10 @@ module Rack
127
101
  # Otherwise give the HTML back
128
102
  html = MiniProfiler.share_template.dup
129
103
  html.gsub!(/\{path\}/, "#{env['SCRIPT_NAME']}#{@config.base_url_path}")
130
- html.gsub!(/\{version\}/, MiniProfiler::VERSION)
104
+ html.gsub!(/\{version\}/, MiniProfiler::ASSET_VERSION)
131
105
  html.gsub!(/\{json\}/, result_json)
132
106
  html.gsub!(/\{includes\}/, get_profile_script(env))
133
- html.gsub!(/\{name\}/, page_struct['Name'])
107
+ html.gsub!(/\{name\}/, page_struct[:name])
134
108
  html.gsub!(/\{duration\}/, "%.1f" % page_struct.duration_ms)
135
109
 
136
110
  [200, {'Content-Type' => 'text/html'}, [html]]
@@ -145,7 +119,7 @@ module Rack
145
119
 
146
120
  full_path = ::File.expand_path("../html/#{file_name}", ::File.dirname(__FILE__))
147
121
  return [404, {}, ["Not found"]] unless ::File.exists? full_path
148
- f = Rack::File.new nil
122
+ f = Rack::File.new nil
149
123
  f.path = full_path
150
124
 
151
125
  begin
@@ -166,7 +140,7 @@ module Rack
166
140
  end
167
141
 
168
142
  def current=(c)
169
- MiniProfiler.current=c
143
+ MiniProfiler.current = c
170
144
  end
171
145
 
172
146
 
@@ -181,7 +155,7 @@ module Rack
181
155
 
182
156
  status = headers = body = nil
183
157
  query_string = env['QUERY_STRING']
184
- path = env['PATH_INFO']
158
+ path = env['PATH_INFO']
185
159
 
186
160
  skip_it = (@config.pre_authorize_cb && !@config.pre_authorize_cb.call(env)) ||
187
161
  (@config.skip_paths && @config.skip_paths.any?{ |p| path[0,p.length] == p}) ||
@@ -262,7 +236,7 @@ module Rack
262
236
 
263
237
  if trace_exceptions
264
238
  exceptions = []
265
- trace = TracePoint.new(:raise) do |tp|
239
+ trace = TracePoint.new(:raise) do |tp|
266
240
  exceptions << tp.raised_exception
267
241
  end
268
242
  trace.enable
@@ -272,8 +246,10 @@ module Rack
272
246
 
273
247
  # Strip all the caching headers so we don't get 304s back
274
248
  # This solves a very annoying bug where rack mini profiler never shows up
275
- env['HTTP_IF_MODIFIED_SINCE'] = ''
276
- env['HTTP_IF_NONE_MATCH'] = ''
249
+ if config.disable_caching
250
+ env['HTTP_IF_MODIFIED_SINCE'] = ''
251
+ env['HTTP_IF_NONE_MATCH'] = ''
252
+ end
277
253
 
278
254
  if query_string =~ /pp=flamegraph/
279
255
  unless defined?(Flamegraph) && Flamegraph.respond_to?(:generate)
@@ -283,7 +259,7 @@ module Rack
283
259
  else
284
260
  # do not sully our profile with mini profiler timings
285
261
  current.measure = false
286
- match_data = query_string.match(/flamegraph_sample_rate=([\d\.]+)/)
262
+ match_data = query_string.match(/flamegraph_sample_rate=([\d\.]+)/)
287
263
 
288
264
  mode = query_string =~ /mode=c/ ? :c : :ruby
289
265
 
@@ -334,8 +310,8 @@ module Rack
334
310
  end
335
311
 
336
312
  page_struct = current.page_struct
337
- page_struct['User'] = user(env)
338
- page_struct['Root'].record_time((Time.now - start) * 1000)
313
+ page_struct[:user] = user(env)
314
+ page_struct[:root].record_time((Time.now - start) * 1000)
339
315
 
340
316
  if flamegraph
341
317
  body.close if body.respond_to? :close
@@ -345,7 +321,7 @@ module Rack
345
321
 
346
322
  begin
347
323
  # no matter what it is, it should be unviewed, otherwise we will miss POST
348
- @storage.set_unviewed(page_struct['User'], page_struct['Id'])
324
+ @storage.set_unviewed(page_struct[:user], page_struct[:id])
349
325
  @storage.save(page_struct)
350
326
 
351
327
  # inject headers, script
@@ -373,9 +349,12 @@ module Rack
373
349
  # Rack::ETag has already inserted some nonesense in the chain
374
350
  content_type = headers['Content-Type']
375
351
 
376
- headers.delete('ETag')
377
- headers.delete('Date')
378
- headers['Cache-Control'] = 'no-store, must-revalidate, private, max-age=0'
352
+ if config.disable_caching
353
+ headers.delete('ETag')
354
+ headers.delete('Date')
355
+ end
356
+
357
+ headers['Cache-Control'] = "#{"no-store, " if config.disable_caching}must-revalidate, private, max-age=0"
379
358
 
380
359
  # inject header
381
360
  if headers.is_a? Hash
@@ -384,7 +363,7 @@ module Rack
384
363
 
385
364
  if current.inject_js && content_type =~ /text\/html/
386
365
  response = Rack::Response.new([], status, headers)
387
- script = self.get_profile_script(env)
366
+ script = self.get_profile_script(env)
388
367
 
389
368
  if String === body
390
369
  response.write inject(body,script)
@@ -437,7 +416,7 @@ module Rack
437
416
 
438
417
  def dump_exceptions(exceptions)
439
418
  headers = {'Content-Type' => 'text/plain'}
440
- body = "Exceptions (#{exceptions.length} raised during request)\n\n"
419
+ body = "Exceptions (#{exceptions.length} raised during request)\n\n"
441
420
  exceptions.each do |e|
442
421
  body << "#{e.class} #{e.message}\n#{e.backtrace.join("\n")}\n\n\n\n"
443
422
  end
@@ -504,7 +483,7 @@ module Rack
504
483
 
505
484
  def ids(env)
506
485
  # cap at 10 ids, otherwise there is a chance you can blow the header
507
- ([current.page_struct["Id"]] + (@storage.get_unviewed_ids(user(env)) || [])[0..8]).uniq
486
+ ([current.page_struct[:id]] + (@storage.get_unviewed_ids(user(env)) || [])[0..8]).uniq
508
487
  end
509
488
 
510
489
  def ids_json(env)
@@ -522,25 +501,26 @@ module Rack
522
501
  # * you have disabled auto append behaviour throught :auto_inject => false flag
523
502
  # * you do not want script to be automatically appended for the current page. You can also call cancel_auto_inject
524
503
  def get_profile_script(env)
504
+ path = "#{env['SCRIPT_NAME']}#{@config.base_url_path}"
525
505
 
526
506
  settings = {
527
- :path => "#{env['SCRIPT_NAME']}#{@config.base_url_path}",
528
- :version => MiniProfiler::VERSION,
529
- :position => @config.position,
530
- :showTrivial => false,
531
- :showChildren => false,
507
+ :path => path,
508
+ :version => MiniProfiler::ASSET_VERSION,
509
+ :position => @config.position,
510
+ :showTrivial => false,
511
+ :showChildren => false,
532
512
  :maxTracesToShow => 10,
533
- :showControls => false,
534
- :authorized => true,
535
- :toggleShortcut => @config.toggle_shortcut,
536
- :startHidden => @config.start_hidden
513
+ :showControls => false,
514
+ :authorized => true,
515
+ :toggleShortcut => @config.toggle_shortcut,
516
+ :startHidden => @config.start_hidden
537
517
  }
538
518
 
539
519
  if current && current.page_struct
540
- settings[:ids] = ids_comma_separated(env)
541
- settings[:currentId] = current.page_struct["Id"]
520
+ settings[:ids] = ids_comma_separated(env)
521
+ settings[:currentId] = current.page_struct[:id]
542
522
  else
543
- settings[:ids] = []
523
+ settings[:ids] = []
544
524
  settings[:currentId] = ""
545
525
  end
546
526
 
@@ -562,6 +542,4 @@ module Rack
562
542
  end
563
543
 
564
544
  end
565
-
566
545
  end
567
-
@@ -3,32 +3,30 @@ module Rack
3
3
  module ProfilingMethods
4
4
 
5
5
  def record_sql(query, elapsed_ms)
6
+ return unless current
6
7
  c = current
7
- return unless c
8
8
  c.current_timer.add_sql(query, elapsed_ms, c.page_struct, c.skip_backtrace, c.full_backtrace) if (c && c.current_timer)
9
9
  end
10
10
 
11
11
  def start_step(name)
12
- if current
13
- parent_timer = current.current_timer
14
- current.current_timer = current_timer = current.current_timer.add_child(name)
15
- [current_timer,parent_timer]
16
- end
12
+ return unless current
13
+ parent_timer = current.current_timer
14
+ current.current_timer = current_timer = current.current_timer.add_child(name)
15
+ [current_timer,parent_timer]
17
16
  end
18
17
 
19
18
  def finish_step(obj)
20
- if obj && current
21
- current_timer, parent_timer = obj
22
- current_timer.record_time
23
- current.current_timer = parent_timer
24
- end
19
+ return unless obj && current
20
+ current_timer, parent_timer = obj
21
+ current_timer.record_time
22
+ current.current_timer = parent_timer
25
23
  end
26
24
 
27
25
  # perform a profiling step on given block
28
26
  def step(name, opts = nil)
29
27
  if current
30
- parent_timer = current.current_timer
31
- result = nil
28
+ parent_timer = current.current_timer
29
+ result = nil
32
30
  current.current_timer = current_timer = current.current_timer.add_child(name)
33
31
  begin
34
32
  result = yield if block_given?
@@ -65,9 +63,9 @@ module Rack
65
63
 
66
64
  def profile_method(klass, method, type = :profile, &blk)
67
65
  default_name = type==:counter ? method.to_s : klass.to_s + " " + method.to_s
68
- clean = clean_method_name(method)
66
+ clean = clean_method_name(method)
69
67
 
70
- with_profiling = ("#{clean}_with_mini_profiler").intern
68
+ with_profiling = ("#{clean}_with_mini_profiler").intern
71
69
  without_profiling = ("#{clean}_without_mini_profiler").intern
72
70
 
73
71
  if klass.send :method_defined?, with_profiling
@@ -131,8 +129,8 @@ module Rack
131
129
  def counter(type, duration_ms=nil)
132
130
  result = nil
133
131
  if block_given?
134
- start = Time.now
135
- result = yield
132
+ start = Time.now
133
+ result = yield
136
134
  duration_ms = (Time.now - start).to_f * 1000
137
135
  end
138
136
  return result if current.nil? || !request_authorized?