rack-mini-profiler 0.1.29 → 0.1.30

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.

checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ca3a413c784a90f894e6ae5b6025f9203d161d1f
4
- data.tar.gz: 570faec20b83dc6069a7b91fb065835668093ad9
3
+ metadata.gz: 88d14211a1bd6e204377a0405f364fa9069029f0
4
+ data.tar.gz: 0c96e6d8d1df58cdd879319063e203efa846bd9f
5
5
  SHA512:
6
- metadata.gz: c2c03d9750cfa1411b78993f16303bdb836a81b741cfea22cccc6209df9c506b6cf020cd0c3409fe77c869009fded27316683ded937b02759b990dbc5dde4a27
7
- data.tar.gz: ba89510aba2923e06632876f740242325e26ebecd48d231b4fcef03cfe1a1417878eba48c63c0ca7d1e040ba029ff2493afdc0e1ff764be6d91fbb1c2c2abf20
6
+ metadata.gz: f681b1fe0dedcbd7ec6dc43f31cc0eb6d7dd78c0c69ae0b6bd040df166450a833a7f987c7d0167f2e54b30c37323bc99f48440078ad59052b852567a4d6ff442
7
+ data.tar.gz: dccb1eec80365ab26fd439d280ccc03fe3f0c9c72d193df117c1392b8f338abb4fbb72f676217c5ae5cd47bfb66a8249b4f7a6e244dcf1df7cd322bbff36c2d1
@@ -148,5 +148,9 @@
148
148
  * Bugfix: SOLR patching had an incorrect monkey patch
149
149
  * Implemented exception tracing using TracePoint see pp=trace-exceptions
150
150
 
151
+ 30-August-2013
151
152
 
153
+ * 1.30
154
+ * Feature: Added Rack::MiniProfiler.counter_method(klass,name) for injecting counters
155
+ * Bug: Counters were not shifting the table correctly
152
156
 
@@ -153,7 +153,7 @@ end
153
153
 
154
154
  ## Notes
155
155
 
156
- - Be sure to require rack_mini_profiler last in your Gemfile, when it is required it will monkey patch pg and mysql gems to insert instrumentation. If included to early no SQL will show up.
156
+ - Be sure to require rack_mini_profiler last in your Gemfile, when it is required it will monkey patch pg and mysql gems to insert instrumentation. If included too early no SQL will show up.
157
157
 
158
158
  ## Available Options
159
159
 
@@ -159,6 +159,8 @@
159
159
  <td class="profiler-duration" title="aggregate duration of all queries in this step (excludes children)">
160
160
  ${MiniProfiler.formatDuration(timing.SqlTimingsDurationMilliseconds)}
161
161
  </td>
162
+ {{else}}
163
+ <td colspan="2"></td>
162
164
  {{/if}}
163
165
 
164
166
  {{each page.CustomTimingNames}}
@@ -1,20 +1,20 @@
1
1
  module Rack
2
2
  class MiniProfiler
3
3
  class ClientSettings
4
-
4
+
5
5
  COOKIE_NAME = "__profilin"
6
6
 
7
7
  BACKTRACE_DEFAULT = nil
8
- BACKTRACE_FULL = 1
8
+ BACKTRACE_FULL = 1
9
9
  BACKTRACE_NONE = 2
10
10
 
11
11
  attr_accessor :disable_profiling
12
12
  attr_accessor :backtrace_level
13
13
 
14
-
14
+
15
15
  def initialize(env)
16
16
  request = ::Rack::Request.new(env)
17
- @cookie = request.cookies[COOKIE_NAME]
17
+ @cookie = request.cookies[COOKIE_NAME]
18
18
  if @cookie
19
19
  @cookie.split(",").map{|pair| pair.split("=")}.each do |k,v|
20
20
  @orig_disable_profiling = @disable_profiling = (v=='t') if k == "dp"
@@ -22,7 +22,7 @@ module Rack
22
22
  end
23
23
  end
24
24
 
25
- @backtrace_level = nil if !@backtrace_level.nil? && (@backtrace_level == 0 || @backtrace_level > BACKTRACE_NONE)
25
+ @backtrace_level = nil if !@backtrace_level.nil? && (@backtrace_level == 0 || @backtrace_level > BACKTRACE_NONE)
26
26
  @orig_backtrace_level = @backtrace_level
27
27
 
28
28
  end
@@ -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 => '/')
@@ -45,19 +45,19 @@ module Rack
45
45
  !@cookie.nil?
46
46
  end
47
47
 
48
- def disable_profiling?
48
+ def disable_profiling?
49
49
  @disable_profiling
50
50
  end
51
51
 
52
- def backtrace_full?
52
+ def backtrace_full?
53
53
  @backtrace_level == BACKTRACE_FULL
54
54
  end
55
55
 
56
- def backtrace_default?
56
+ def backtrace_default?
57
57
  @backtrace_level == BACKTRACE_DEFAULT
58
58
  end
59
-
60
- def backtrace_none?
59
+
60
+ def backtrace_none?
61
61
  @backtrace_level == BACKTRACE_NONE
62
62
  end
63
63
  end
@@ -43,16 +43,16 @@ module Rack
43
43
  def root
44
44
  @attributes['Root']
45
45
  end
46
-
46
+
47
47
  def to_json(*a)
48
48
  attribs = @attributes.merge(
49
- "Started" => '/Date(%d)/' % @attributes['Started'],
49
+ "Started" => '/Date(%d)/' % @attributes['Started'],
50
50
  "DurationMilliseconds" => @attributes['Root']['DurationMilliseconds'],
51
51
  "CustomTimingNames" => @attributes['CustomTimingStats'].keys.sort
52
- )
52
+ )
53
53
  ::JSON.generate(attribs, :max_nesting => 100)
54
54
  end
55
55
  end
56
-
56
+
57
57
  end
58
58
  end
@@ -450,6 +450,9 @@ module Rack
450
450
  body << "#{k}: #{v}\n"
451
451
  end
452
452
 
453
+ body << "\n\nRuby Version\n---------------\n"
454
+ body << "#{RUBY_VERSION} p#{RUBY_PATCHLEVEL}\n"
455
+
453
456
  body << "\n\nInternals\n---------------\n"
454
457
  body << "Storage Provider #{config.storage_instance}\n"
455
458
  body << "User #{user(env)}\n"
@@ -55,8 +55,16 @@ module Rack
55
55
  end
56
56
  end
57
57
 
58
- def profile_method(klass, method, &blk)
59
- default_name = klass.to_s + " " + method.to_s
58
+ def counter_method(klass, method, &blk)
59
+ self.profile_method(klass, method, :counter, &blk)
60
+ end
61
+
62
+ def uncounter_method(klass, method)
63
+ self.unprofile_method(klass, method)
64
+ end
65
+
66
+ def profile_method(klass, method, type = :profile, &blk)
67
+ default_name = type==:counter ? method.to_s : klass.to_s + " " + method.to_s
60
68
  clean = clean_method_name(method)
61
69
 
62
70
  with_profiling = ("#{clean}_with_mini_profiler").intern
@@ -81,22 +89,34 @@ module Rack
81
89
  end
82
90
  end
83
91
 
84
- parent_timer = Rack::MiniProfiler.current.current_timer
85
- page_struct = Rack::MiniProfiler.current.page_struct
86
92
  result = nil
93
+ parent_timer = Rack::MiniProfiler.current.current_timer
87
94
 
88
- Rack::MiniProfiler.current.current_timer = current_timer = parent_timer.add_child(name)
89
- begin
90
- result = self.send without_profiling, *args, &orig
91
- ensure
92
- current_timer.record_time
93
- Rack::MiniProfiler.current.current_timer = parent_timer
95
+ if type == :counter
96
+ start = Time.now
97
+ begin
98
+ result = self.send without_profiling, *args, &orig
99
+ ensure
100
+ duration_ms = (Time.now - start).to_f * 1000
101
+ parent_timer.add_custom(name, duration_ms, Rack::MiniProfiler.current.page_struct )
102
+ end
103
+ else
104
+ page_struct = Rack::MiniProfiler.current.page_struct
105
+
106
+ Rack::MiniProfiler.current.current_timer = current_timer = parent_timer.add_child(name)
107
+ begin
108
+ result = self.send without_profiling, *args, &orig
109
+ ensure
110
+ current_timer.record_time
111
+ Rack::MiniProfiler.current.current_timer = parent_timer
112
+ end
94
113
  end
114
+
95
115
  result
96
116
  end
97
117
  klass.send :alias_method, method, with_profiling
98
118
  end
99
-
119
+
100
120
  # Add a custom timing. These are displayed similar to SQL/query time in
101
121
  # columns expanding to the right.
102
122
  #
@@ -4,7 +4,7 @@ module Rack
4
4
  class MiniProfiler
5
5
 
6
6
  class RequestTimerStruct < TimerStruct
7
-
7
+
8
8
  def self.createRoot(name, page)
9
9
  rt = RequestTimerStruct.new(name, page, nil)
10
10
  rt["IsRoot"]= true
@@ -77,7 +77,7 @@ module Rack
77
77
  self['SqlTimings'].push(timer)
78
78
  self['HasSqlTimings'] = true
79
79
  self['SqlTimingsDurationMilliseconds'] += elapsed_ms
80
- page['DurationMillisecondsInSql'] += elapsed_ms
80
+ page['DurationMillisecondsInSql'] += elapsed_ms
81
81
  timer
82
82
  end
83
83
 
@@ -103,13 +103,13 @@ module Rack
103
103
  self['DurationMilliseconds'] = milliseconds
104
104
  self['IsTrivial'] = true if milliseconds < self["TrivialDurationThresholdMilliseconds"]
105
105
  self['DurationWithoutChildrenMilliseconds'] = milliseconds - @children_duration
106
-
106
+
107
107
  if @parent
108
108
  @parent.children_duration += milliseconds
109
109
  end
110
110
 
111
- end
111
+ end
112
112
  end
113
113
  end
114
-
114
+
115
115
  end
@@ -1,5 +1,5 @@
1
1
  module Rack
2
2
  class MiniProfiler
3
- VERSION = '8ceae04dd2abbc08ffe85a258d408292'.freeze
3
+ VERSION = '94950211d89e89a9694bc493497ab05f'.freeze
4
4
  end
5
5
  end
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "rack-mini-profiler"
3
- s.version = "0.1.29"
3
+ s.version = "0.1.30"
4
4
  s.summary = "Profiles loading speed for rack applications."
5
5
  s.authors = ["Sam Saffron", "Robin Ward","Aleks Totic"]
6
6
  s.description = "Profiling toolkit for Rack applications with Rails integration. Client Side profiling, DB profiling and Server profiling."
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rack-mini-profiler
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.29
4
+ version: 0.1.30
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sam Saffron
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2013-08-20 00:00:00.000000000 Z
13
+ date: 2013-08-30 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rack