rack-mini-profiler 0.9.0 → 0.9.1

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: 521860df9b65cce4c241d9fed2b68c671fcecdfe
4
- data.tar.gz: bc1e39096a4c99ff1eabc31fa94bca57845dc95d
3
+ metadata.gz: d38192262a50a132bef944ea6508e5c2edd65d30
4
+ data.tar.gz: 3f9c5065465f08cdf643b701185b383eaa04b182
5
5
  SHA512:
6
- metadata.gz: f5b6273e7286a487549c2beea765802d30f6e27e7624dd4317c12cb028e8eaa97cac9914e8bb6bb53f12757f1002fa56d513a60adf57f7d3910875ff6784d7de
7
- data.tar.gz: cbe7f735f443cb54c209170a32da9c45ded84d0b151e87ba1cc0f113c6cad393390430712e354c88215b7f88a69f540649be033fcdadfbbef44d9d0aacd4305d
6
+ metadata.gz: 47dc4effcf2bbd0d46a0be9738e761783a23bb6f2a35778913f02fc01910ee3b143d72b858007ef0e7dcb0e3570f7637b86ef6f1e3d013b7b71715cc6919c5b8
7
+ data.tar.gz: ac388ffaa4ea593ac4f96dd507d5d638a35bae9e526dffb772bacf0c8afd4f0f8639e8b255ff186e5e358ed921ed8cdce1d6a95fb152271462c97ab31610ae74
data/CHANGELOG CHANGED
@@ -170,5 +170,12 @@
170
170
  * Improved reports for pp=profile-gc
171
171
  * pp=flamegraph&flamegraph_sample_rate=1 , allow you to specify sampling rates
172
172
 
173
+ 13-March-2013 - Sam Saffron
174
+ * Version 0.9.1
175
+ * Added back Ruby 1.8 support (thanks Malet)
176
+ * Corrected Rails 3.0 support (thanks Zlatko)
177
+ * Corrected fix possible XSS (admin only)
178
+ * Amend Railstie so MiniProfiler can be launched with action view or action controller (Thanks Akira)
179
+ * Corrected Sql patching to avoid setting instance vars on nil which is frozen (thanks Andy, huoxito)
173
180
 
174
181
 
data/README.md CHANGED
@@ -4,12 +4,21 @@
4
4
 
5
5
  Middleware that displays speed badge for every html page. Designed to work both in production and in development.
6
6
 
7
+ #### Features
8
+
9
+ * database profiling. Currently supports Mysql2, Postgres, and Mongoid3 (with fallback support to ActiveRecord)
10
+
11
+ #### Learn more
12
+
13
+ * [Visit our community](http://community.miniprofiler.com)
14
+ * [Watch the RailsCast](http://railscasts.com/episodes/368-miniprofiler)
15
+ * [Read about Flame graphs in rack-mini-profiler](http://samsaffron.com/archive/2013/03/19/flame-graphs-in-ruby-miniprofiler)
16
+ * [Read the announcement posts from 2012](http://samsaffron.com/archive/2012/07/12/miniprofiler-ruby-edition)
17
+
7
18
  ## rack-mini-profiler needs your help
8
19
 
9
20
  We have decided to restructure our repository so there is a central UI repo and the various language implementation have their own.
10
21
 
11
- The new home for rack-mini-profiler is https://github.com/MiniProfiler/rack-mini-profiler
12
-
13
22
  **WE NEED HELP.**
14
23
 
15
24
  - Setting up a build that reuses https://github.com/MiniProfiler/ui
@@ -32,6 +41,26 @@ NOTE: Be sure to require rack_mini_profiler below the `pg` and `mysql` gems in y
32
41
 
33
42
  All you have to do is include the Gem and you're good to go in development. See notes below for use in production.
34
43
 
44
+ #### Rails and manual initialization
45
+
46
+ In case you need to make sure rack_mini_profiler initialized after all other gems.
47
+ Or you want to execute some code before rack_mini_profiler required.
48
+
49
+ ```ruby
50
+ gem 'rack-mini-profiler', require: false
51
+ ```
52
+
53
+ Then put initialize code in file like `config/initializers/rack_profiler.rb`
54
+
55
+ ```ruby
56
+ if Rails.env == 'development'
57
+ require 'rack-mini-profiler'
58
+
59
+ # initialization is skipped so trigger it
60
+ Rack::MiniProfilerRails.initialize!(Rails.application)
61
+ end
62
+ ```
63
+
35
64
  #### Rack Builder
36
65
 
37
66
  ```ruby
@@ -52,7 +81,17 @@ class MyApp < Sinatra::Base
52
81
  end
53
82
  ```
54
83
 
55
- ## Using rack-mini-profiler in your app
84
+ ### Flamegraphs
85
+
86
+ To generate [flamegraphs](http://samsaffron.com/archive/2013/03/19/flame-graphs-in-ruby-miniprofiler):
87
+
88
+ * add the **flamegraph** gem to your Gemfile
89
+ * visit a page in your app with `?pp=flamegraph`
90
+
91
+ Flamegraph generation is supported in MRI 2.0 and 2.1 only.
92
+
93
+
94
+ ## Access control in production
56
95
 
57
96
  rack-mini-profiler is designed with production profiling in mind. To enable that just run `Rack::MiniProfiler.authorize_request` once you know a request is allowed to profile.
58
97
 
@@ -65,20 +104,20 @@ def authorize
65
104
  end
66
105
  ```
67
106
 
68
- ## Database profiling
107
+ ## Configuration
69
108
 
70
- Currently supports Mysql2, Postgres, and Mongoid3 (with fallback support to ActiveRecord)
109
+ Various aspects of rack-mini-profiler's behavior can be configured when your app boots.
110
+ For example in a Rails app, this should be done in an initializer:
111
+ **config/initializers/mini_profiler.rb**
71
112
 
72
- ## Storage
113
+ ### Storage
73
114
 
74
- rack-mini-profiler stores it's results so they can be shared later and aren't lost at the end of the request.
115
+ rack-mini-profiler stores its results so they can be shared later and aren't lost at the end of the request.
75
116
 
76
117
  There are 4 storage options: `MemoryStore`, `RedisStore`, `MemcacheStore`, and `FileStore`.
77
118
 
78
119
  `FileStore` is the default in Rails environments and will write files to `tmp/miniprofiler/*`. `MemoryStore` is the default otherwise.
79
120
 
80
- To change the default you can create a file in `config/initializers/mini_profiler.rb`
81
-
82
121
  ```ruby
83
122
  # set MemoryStore
84
123
  Rack::MiniProfiler.config.storage = Rack::MiniProfiler::MemoryStore
@@ -97,7 +136,7 @@ RedisStore/MemcacheStore work in multi process and multi machine environments (R
97
136
 
98
137
  Additionally you may implement an AbstractStore for your own provider.
99
138
 
100
- ## User result segregation
139
+ ### User result segregation
101
140
 
102
141
  MiniProfiler will attempt to keep all user results isolated, out-of-the-box the user provider uses the ip address:
103
142
 
@@ -113,35 +152,58 @@ Rack::MiniProfiler.config.user_provider = Proc.new{ |env| CurrentUser.get(env) }
113
152
 
114
153
  The string this function returns should be unique for each user on the system (for anonymous you may need to fall back to ip address)
115
154
 
116
- ## Running the Specs
155
+ ### Configuration Options
117
156
 
157
+ You can set configuration options using the configuration accessor on `Rack::MiniProfiler`.
158
+ For example:
159
+
160
+ ```ruby
161
+ Rack::MiniProfiler.config.position = 'right'
162
+ Rack::MiniProfiler.config.start_hidden = true
118
163
  ```
119
- $ rake build
120
- $ rake spec
121
- ```
164
+ The available configuration options are:
122
165
 
123
- Additionally you can also run `autotest` if you like.
166
+ * pre_authorize_cb - A lambda callback you can set to determine whether or not mini_profiler should be visible on a given request. Default in a Rails environment is only on in development mode. If in a Rack app, the default is always on.
167
+ * position - Can either be 'right' or 'left'. Default is 'left'.
168
+ * skip_schema_queries - Whether or not you want to log the queries about the schema of your tables. Default is 'false', 'true' in rails development.
169
+ * auto_inject (default true) - when false the miniprofiler script is not injected in the page
170
+ * backtrace_filter - a regex you can use to filter out unwanted lines from the backtraces
171
+ * toggle_shortcut (default Alt+P) - a jquery.hotkeys.js-style keyboard shortcut, used to toggle the mini_profiler's visibility. See http://code.google.com/p/js-hotkeys/ for more info.
172
+ * start_hidden (default false) - Whether or not you want the mini_profiler to be visible when loading a page
173
+ * backtrace_threshold_ms (default zero) - Minimum SQL query elapsed time before a backtrace is recorded. Backtrace recording can take a couple of milliseconds on rubies earlier than 2.0, impacting performance for very small queries.
174
+ * flamegraph_sample_rate (default 0.5ms) - How often fast_stack should get stack trace info to generate flamegraphs
124
175
 
125
- ## Configuration Options
176
+ ### Custom middleware ordering (required if using `Rack::Deflate` with Rails)
126
177
 
127
- You can set configuration options using the configuration accessor on Rack::MiniProfiler:
178
+ If you are using `Rack::Deflate` with rails and rack-mini-profiler in its default configuration,
179
+ `Rack::MiniProfiler` will be injected (as always) at position 0 in the middleware stack. This
180
+ will result in it attempting to inject html into the already-compressed response body. To fix this,
181
+ the middleware ordering must be overriden.
128
182
 
129
- ```
130
- # Have Mini Profiler show up on the right
131
- Rack::MiniProfiler.config.position = 'right'
132
- # Have Mini Profiler start in hidden mode - display with short cut (defaulted to 'Alt+P')
133
- Rack::MiniProfiler.config.start_hidden = true
134
- # Have Rack::MiniProfiler start disabled - you can use query string option to re-enable later
135
- Rack::MiniProfiler.config.enabled = false
136
- # Don't collect backtraces on SQL queries that take less than 5 ms to execute
137
- # (necessary on Rubies earlier than 2.0)
138
- Rack::MiniProfiler.config.backtrace_threshold_ms = 5
139
- # Set the sampling rate for flamegraph, in ms - defaults to 0.5ms
140
- Rack::MiniProfiler.config.flamegraph_sample_rate = 1
183
+ To do this, first add `, require: false` to the gemfile entry for rack-mini-profiler.
184
+ This will prevent the railtie from running. Then, customize the initialization
185
+ in the initializer like so:
186
+
187
+ ```ruby
188
+ require 'rack-mini-profiler'
189
+
190
+ Rack::MiniProfilerRails.initialize!(Rails.application)
191
+
192
+ Rails.application.middleware.delete(Rack::MiniProfiler)
193
+ Rails.application.middleware.insert_after(Rack::Deflater, Rack::MiniProfiler)
141
194
  ```
142
195
 
196
+ Deleting the middleware and then reinserting it is a bit inelegant, but
197
+ a sufficient and costless solution. It is possible that rack-mini-profiler might
198
+ support this scenario more directly if it is found that
199
+ there is significant need for this confriguration or that
200
+ the above recipe causes problems.
201
+
202
+
203
+ ## Special query strings
204
+
205
+ If you include the query string `pp=help` at the end of your request you will see the various options available. You can use these options to extend or contract the amount of diagnostics rack-mini-profiler gathers.
143
206
 
144
- In a Rails app, this can be done conveniently in an initializer such as config/initializers/mini_profiler.rb.
145
207
 
146
208
  ## Rails 2.X support
147
209
 
@@ -162,7 +224,7 @@ c.storage_options = {:path => tmp}
162
224
  c.storage = ::Rack::MiniProfiler::FileStore
163
225
  config.middleware.use(::Rack::MiniProfiler)
164
226
  ::Rack::MiniProfiler.profile_method(ActionController::Base, :process) {|action| "Executing action: #{action}"}
165
- ::Rack::MiniProfiler.profile_method(ActionView::Template, :render) {|x,y| "Rendering: #{@virtual_path}"}
227
+ ::Rack::MiniProfiler.profile_method(ActionView::Template, :render) {|x,y| "Rendering: #{path_without_format_and_extension}"}
166
228
 
167
229
  # monkey patch away an activesupport and json_pure incompatability
168
230
  # http://pivotallabs.com/users/alex/blog/articles/1332-monkey-patch-of-the-day-activesupport-vs-json-pure-vs-ruby-1-8
@@ -173,21 +235,14 @@ if JSON.const_defined?(:Pure)
173
235
  end
174
236
  ```
175
237
 
176
- ## Available Options
177
-
178
- * pre_authorize_cb - A lambda callback you can set to determine whether or not mini_profiler should be visible on a given request. Default in a Rails environment is only on in development mode. If in a Rack app, the default is always on.
179
- * position - Can either be 'right' or 'left'. Default is 'left'.
180
- * skip_schema_queries - Whether or not you want to log the queries about the schema of your tables. Default is 'false', 'true' in rails development.
181
- * auto_inject (default true) - when false the miniprofiler script is not injected in the page
182
- * backtrace_filter - a regex you can use to filter out unwanted lines from the backtraces
183
- * toggle_shortcut (default Alt+P) - a jquery.hotkeys.js-style keyboard shortcut, used to toggle the mini_profiler's visibility. See http://code.google.com/p/js-hotkeys/ for more info.
184
- * start_hidden (default false) - Whether or not you want the mini_profiler to be visible when loading a page
185
- * backtrace_threshold_ms (default zero) - Minimum SQL query elapsed time before a backtrace is recorded. Backtrace recording can take a couple of milliseconds on rubies earlier than 2.0, impacting performance for very small queries.
186
- * flamegraph_sample_rate (default 0.5ms) - How often fast_stack should get stack trace info to generate flamegraphs
238
+ ## Running the Specs
187
239
 
188
- ## Special query strings
240
+ ```
241
+ $ rake build
242
+ $ rake spec
243
+ ```
189
244
 
190
- If you include the query string `pp=help` at the end of your request you will see the various options available. You can use these options to extend or contract the amount of diagnostics rack-mini-profiler gathers.
245
+ Additionally you can also run `autotest` if you like.
191
246
 
192
247
  ## Licence
193
248
 
@@ -107,7 +107,9 @@ module Rack
107
107
  page_struct = @storage.load(id)
108
108
  unless page_struct
109
109
  @storage.set_viewed(user(env), id)
110
- return [404, {}, ["Request not found: #{request['id']} - user #{user(env)}"]]
110
+ id = ERB::Util.html_escape(request['id'])
111
+ user_info = ERB::Util.html_escape(user(env))
112
+ return [404, {}, ["Request not found: #{id} - user #{user_info}"]]
111
113
  end
112
114
  unless page_struct['HasUserViewed']
113
115
  page_struct['ClientTimings'] = ClientTimerStruct.init_from_form_data(env, page_struct)
@@ -281,16 +283,16 @@ module Rack
281
283
  else
282
284
  # do not sully our profile with mini profiler timings
283
285
  current.measure = false
284
- match_data = query_string.match(/flamegraph_sample_rate=(?<rate>[\d\.]+)/)
286
+ match_data = query_string.match(/flamegraph_sample_rate=([\d\.]+)/)
285
287
 
286
288
  mode = query_string =~ /mode=c/ ? :c : :ruby
287
289
 
288
- if match_data && !match_data[:rate].to_f.zero?
289
- sample_rate = match_data[:rate].to_f
290
+ if match_data && !match_data[1].to_f.zero?
291
+ sample_rate = match_data[1].to_f
290
292
  else
291
293
  sample_rate = config.flamegraph_sample_rate
292
294
  end
293
- flamegraph = Flamegraph.generate(nil, fidelity: sample_rate, embed_resources: query_string =~ /embed/, mode: mode) do
295
+ flamegraph = Flamegraph.generate(nil, :fidelity => sample_rate, :embed_resources => query_string =~ /embed/, :mode => mode) do
294
296
  status,headers,body = @app.call(env)
295
297
  end
296
298
  end
@@ -7,14 +7,17 @@ module Rack::MiniProfilerRails
7
7
  c = Rack::MiniProfiler.config
8
8
 
9
9
  # By default, only show the MiniProfiler in development mode, in production allow profiling if post_authorize_cb is set
10
- c.pre_authorize_cb ||= lambda { |env|
10
+ #
11
+ # NOTE: this must be set here with = and not ||=
12
+ # The out of the box default is "true"
13
+ c.pre_authorize_cb = lambda { |env|
11
14
  !Rails.env.test?
12
15
  }
13
16
 
14
17
  c.skip_paths ||= []
15
18
 
16
19
  if Rails.env.development?
17
- c.skip_paths << app.config.assets.prefix
20
+ c.skip_paths << app.config.assets.prefix if app.respond_to? :assets
18
21
  c.skip_schema_queries = true
19
22
  end
20
23
 
@@ -27,7 +30,8 @@ module Rack::MiniProfilerRails
27
30
  end
28
31
 
29
32
  # The file store is just so much less flaky
30
- tmp = Rails.root.to_s + "/tmp/miniprofiler"
33
+ base_path = Rails.application.config.paths['tmp'].first rescue "#{Rails.root}/tmp"
34
+ tmp = base_path + '/miniprofiler'
31
35
  FileUtils.mkdir_p(tmp) unless File.exists?(tmp)
32
36
 
33
37
  c.storage_options = {:path => tmp}
@@ -42,8 +46,12 @@ module Rack::MiniProfilerRails
42
46
  app.middleware.insert(0, Rack::MiniProfiler)
43
47
 
44
48
  # Attach to various Rails methods
45
- ::Rack::MiniProfiler.profile_method(ActionController::Base, :process) {|action| "Executing action: #{action}"}
46
- ::Rack::MiniProfiler.profile_method(ActionView::Template, :render) {|x,y| "Rendering: #{@virtual_path}"}
49
+ ActiveSupport.on_load(:action_controller) do
50
+ ::Rack::MiniProfiler.profile_method(ActionController::Base, :process) {|action| "Executing action: #{action}"}
51
+ end
52
+ ActiveSupport.on_load(:action_view) do
53
+ ::Rack::MiniProfiler.profile_method(ActionView::Template, :render) {|x,y| "Rendering: #{@virtual_path}"}
54
+ end
47
55
  end
48
56
 
49
57
  class Railtie < ::Rails::Railtie
@@ -47,7 +47,8 @@ if SqlPatches.class_exists? "Mysql2::Client"
47
47
  start = Time.now
48
48
  result = query_without_profiling(*args,&blk)
49
49
  elapsed_time = ((Time.now - start).to_f * 1000).round(1)
50
- result.instance_variable_set("@miniprofiler_sql_id", ::Rack::MiniProfiler.record_sql(args[0], elapsed_time))
50
+ record = ::Rack::MiniProfiler.record_sql(args[0], elapsed_time)
51
+ result.instance_variable_set("@miniprofiler_sql_id", record) if result
51
52
 
52
53
  result
53
54
 
@@ -117,7 +118,8 @@ if SqlPatches.class_exists? "PG::Result"
117
118
  start = Time.now
118
119
  result = exec_without_profiling(*args,&blk)
119
120
  elapsed_time = ((Time.now - start).to_f * 1000).round(1)
120
- result.instance_variable_set("@miniprofiler_sql_id", ::Rack::MiniProfiler.record_sql(args[0], elapsed_time))
121
+ record = ::Rack::MiniProfiler.record_sql(args[0], elapsed_time)
122
+ result.instance_variable_set("@miniprofiler_sql_id", record) if result
121
123
 
122
124
  result
123
125
  end
@@ -131,7 +133,8 @@ if SqlPatches.class_exists? "PG::Result"
131
133
  elapsed_time = ((Time.now - start).to_f * 1000).round(1)
132
134
  mapped = args[0]
133
135
  mapped = @prepare_map[mapped] || args[0] if @prepare_map
134
- result.instance_variable_set("@miniprofiler_sql_id", ::Rack::MiniProfiler.record_sql(mapped, elapsed_time))
136
+ record = ::Rack::MiniProfiler.record_sql(mapped, elapsed_time)
137
+ result.instance_variable_set("@miniprofiler_sql_id", record) if result
135
138
 
136
139
  result
137
140
  end
@@ -142,10 +145,12 @@ if SqlPatches.class_exists? "PG::Result"
142
145
 
143
146
  start = Time.now
144
147
  result = send_query_prepared_without_profiling(*args,&blk)
148
+
145
149
  elapsed_time = ((Time.now - start).to_f * 1000).round(1)
146
150
  mapped = args[0]
147
151
  mapped = @prepare_map[mapped] || args[0] if @prepare_map
148
- result.instance_variable_set("@miniprofiler_sql_id", ::Rack::MiniProfiler.record_sql(mapped, elapsed_time))
152
+ record = ::Rack::MiniProfiler.record_sql(mapped, elapsed_time)
153
+ result.instance_variable_set("@miniprofiler_sql_id", record) if result
149
154
 
150
155
  result
151
156
  end
@@ -157,7 +162,8 @@ if SqlPatches.class_exists? "PG::Result"
157
162
  start = Time.now
158
163
  result = exec_without_profiling(*args,&blk)
159
164
  elapsed_time = ((Time.now - start).to_f * 1000).round(1)
160
- result.instance_variable_set("@miniprofiler_sql_id", ::Rack::MiniProfiler.record_sql(args[0], elapsed_time))
165
+ record = ::Rack::MiniProfiler.record_sql(args[0], elapsed_time)
166
+ result.instance_variable_set("@miniprofiler_sql_id", record) if result
161
167
 
162
168
  result
163
169
  end
@@ -180,7 +186,7 @@ if SqlPatches.class_exists?("Moped::Node")
180
186
  start = Time.now
181
187
  result = process_without_profiling(*args,&blk)
182
188
  elapsed_time = ((Time.now - start).to_f * 1000).round(1)
183
- result.instance_variable_set("@miniprofiler_sql_id", ::Rack::MiniProfiler.record_sql(args[0].log_inspect, elapsed_time))
189
+ ::Rack::MiniProfiler.record_sql(args[0].log_inspect, elapsed_time)
184
190
 
185
191
  result
186
192
  end
@@ -207,7 +213,7 @@ if SqlPatches.class_exists?("RSolr::Connection") && RSolr::VERSION[0] != "0" #
207
213
  data << "\n#{Rack::Utils.unescape(request_context[:data])}"
208
214
  end
209
215
  end
210
- result.instance_variable_set("@miniprofiler_sql_id", ::Rack::MiniProfiler.record_sql(data, elapsed_time))
216
+ ::Rack::MiniProfiler.record_sql(data, elapsed_time)
211
217
 
212
218
  result
213
219
  end
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "rack-mini-profiler"
3
- s.version = "0.9.0"
3
+ s.version = "0.9.1"
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."
@@ -32,4 +32,4 @@ Gem::Specification.new do |s|
32
32
  s.add_development_dependency 'flamegraph'
33
33
 
34
34
  s.require_paths = ["lib"]
35
- end
35
+ end
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.9.0
4
+ version: 0.9.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sam Saffron
@@ -10,174 +10,174 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2014-01-05 00:00:00.000000000 Z
13
+ date: 2014-03-13 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rack
17
17
  requirement: !ruby/object:Gem::Requirement
18
18
  requirements:
19
- - - '>='
19
+ - - ">="
20
20
  - !ruby/object:Gem::Version
21
21
  version: 1.1.3
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
25
  requirements:
26
- - - '>='
26
+ - - ">="
27
27
  - !ruby/object:Gem::Version
28
28
  version: 1.1.3
29
29
  - !ruby/object:Gem::Dependency
30
30
  name: rake
31
31
  requirement: !ruby/object:Gem::Requirement
32
32
  requirements:
33
- - - '>='
33
+ - - ">="
34
34
  - !ruby/object:Gem::Version
35
35
  version: '0'
36
36
  type: :development
37
37
  prerelease: false
38
38
  version_requirements: !ruby/object:Gem::Requirement
39
39
  requirements:
40
- - - '>='
40
+ - - ">="
41
41
  - !ruby/object:Gem::Version
42
42
  version: '0'
43
43
  - !ruby/object:Gem::Dependency
44
44
  name: rack-test
45
45
  requirement: !ruby/object:Gem::Requirement
46
46
  requirements:
47
- - - '>='
47
+ - - ">="
48
48
  - !ruby/object:Gem::Version
49
49
  version: '0'
50
50
  type: :development
51
51
  prerelease: false
52
52
  version_requirements: !ruby/object:Gem::Requirement
53
53
  requirements:
54
- - - '>='
54
+ - - ">="
55
55
  - !ruby/object:Gem::Version
56
56
  version: '0'
57
57
  - !ruby/object:Gem::Dependency
58
58
  name: activerecord
59
59
  requirement: !ruby/object:Gem::Requirement
60
60
  requirements:
61
- - - ~>
61
+ - - "~>"
62
62
  - !ruby/object:Gem::Version
63
63
  version: '3.0'
64
64
  type: :development
65
65
  prerelease: false
66
66
  version_requirements: !ruby/object:Gem::Requirement
67
67
  requirements:
68
- - - ~>
68
+ - - "~>"
69
69
  - !ruby/object:Gem::Version
70
70
  version: '3.0'
71
71
  - !ruby/object:Gem::Dependency
72
72
  name: dalli
73
73
  requirement: !ruby/object:Gem::Requirement
74
74
  requirements:
75
- - - '>='
75
+ - - ">="
76
76
  - !ruby/object:Gem::Version
77
77
  version: '0'
78
78
  type: :development
79
79
  prerelease: false
80
80
  version_requirements: !ruby/object:Gem::Requirement
81
81
  requirements:
82
- - - '>='
82
+ - - ">="
83
83
  - !ruby/object:Gem::Version
84
84
  version: '0'
85
85
  - !ruby/object:Gem::Dependency
86
86
  name: rspec
87
87
  requirement: !ruby/object:Gem::Requirement
88
88
  requirements:
89
- - - '>='
89
+ - - ">="
90
90
  - !ruby/object:Gem::Version
91
91
  version: '0'
92
92
  type: :development
93
93
  prerelease: false
94
94
  version_requirements: !ruby/object:Gem::Requirement
95
95
  requirements:
96
- - - '>='
96
+ - - ">="
97
97
  - !ruby/object:Gem::Version
98
98
  version: '0'
99
99
  - !ruby/object:Gem::Dependency
100
100
  name: ZenTest
101
101
  requirement: !ruby/object:Gem::Requirement
102
102
  requirements:
103
- - - '>='
103
+ - - ">="
104
104
  - !ruby/object:Gem::Version
105
105
  version: '0'
106
106
  type: :development
107
107
  prerelease: false
108
108
  version_requirements: !ruby/object:Gem::Requirement
109
109
  requirements:
110
- - - '>='
110
+ - - ">="
111
111
  - !ruby/object:Gem::Version
112
112
  version: '0'
113
113
  - !ruby/object:Gem::Dependency
114
114
  name: autotest
115
115
  requirement: !ruby/object:Gem::Requirement
116
116
  requirements:
117
- - - '>='
117
+ - - ">="
118
118
  - !ruby/object:Gem::Version
119
119
  version: '0'
120
120
  type: :development
121
121
  prerelease: false
122
122
  version_requirements: !ruby/object:Gem::Requirement
123
123
  requirements:
124
- - - '>='
124
+ - - ">="
125
125
  - !ruby/object:Gem::Version
126
126
  version: '0'
127
127
  - !ruby/object:Gem::Dependency
128
128
  name: redis
129
129
  requirement: !ruby/object:Gem::Requirement
130
130
  requirements:
131
- - - '>='
131
+ - - ">="
132
132
  - !ruby/object:Gem::Version
133
133
  version: '0'
134
134
  type: :development
135
135
  prerelease: false
136
136
  version_requirements: !ruby/object:Gem::Requirement
137
137
  requirements:
138
- - - '>='
138
+ - - ">="
139
139
  - !ruby/object:Gem::Version
140
140
  version: '0'
141
141
  - !ruby/object:Gem::Dependency
142
142
  name: therubyracer
143
143
  requirement: !ruby/object:Gem::Requirement
144
144
  requirements:
145
- - - '>='
145
+ - - ">="
146
146
  - !ruby/object:Gem::Version
147
147
  version: '0'
148
148
  type: :development
149
149
  prerelease: false
150
150
  version_requirements: !ruby/object:Gem::Requirement
151
151
  requirements:
152
- - - '>='
152
+ - - ">="
153
153
  - !ruby/object:Gem::Version
154
154
  version: '0'
155
155
  - !ruby/object:Gem::Dependency
156
156
  name: less
157
157
  requirement: !ruby/object:Gem::Requirement
158
158
  requirements:
159
- - - '>='
159
+ - - ">="
160
160
  - !ruby/object:Gem::Version
161
161
  version: '0'
162
162
  type: :development
163
163
  prerelease: false
164
164
  version_requirements: !ruby/object:Gem::Requirement
165
165
  requirements:
166
- - - '>='
166
+ - - ">="
167
167
  - !ruby/object:Gem::Version
168
168
  version: '0'
169
169
  - !ruby/object:Gem::Dependency
170
170
  name: flamegraph
171
171
  requirement: !ruby/object:Gem::Requirement
172
172
  requirements:
173
- - - '>='
173
+ - - ">="
174
174
  - !ruby/object:Gem::Version
175
175
  version: '0'
176
176
  type: :development
177
177
  prerelease: false
178
178
  version_requirements: !ruby/object:Gem::Requirement
179
179
  requirements:
180
- - - '>='
180
+ - - ">="
181
181
  - !ruby/object:Gem::Version
182
182
  version: '0'
183
183
  description: Profiling toolkit for Rack applications with Rails integration. Client
@@ -189,42 +189,42 @@ extra_rdoc_files:
189
189
  - README.md
190
190
  - CHANGELOG
191
191
  files:
192
- - rack-mini-profiler.gemspec
193
- - lib/mini_profiler_rails/railtie.rb
194
- - lib/html/list.css
195
- - lib/html/jquery.tmpl.js
196
- - lib/html/list.tmpl
197
- - lib/html/share.html
192
+ - CHANGELOG
193
+ - README.md
194
+ - lib/html/includes.css
195
+ - lib/html/includes.js
198
196
  - lib/html/includes.less
199
- - lib/html/profile_handler.js
200
197
  - lib/html/includes.tmpl
201
- - lib/html/includes.js
202
- - lib/html/list.js
203
198
  - lib/html/jquery.1.7.1.js
204
- - lib/html/includes.css
199
+ - lib/html/jquery.tmpl.js
200
+ - lib/html/list.css
201
+ - lib/html/list.js
202
+ - lib/html/list.tmpl
203
+ - lib/html/profile_handler.js
204
+ - lib/html/share.html
205
+ - lib/mini_profiler/client_settings.rb
206
+ - lib/mini_profiler/client_timer_struct.rb
207
+ - lib/mini_profiler/config.rb
205
208
  - lib/mini_profiler/context.rb
209
+ - lib/mini_profiler/custom_timer_struct.rb
210
+ - lib/mini_profiler/gc_profiler.rb
206
211
  - lib/mini_profiler/page_timer_struct.rb
212
+ - lib/mini_profiler/profiler.rb
213
+ - lib/mini_profiler/profiling_methods.rb
214
+ - lib/mini_profiler/request_timer_struct.rb
215
+ - lib/mini_profiler/sql_timer_struct.rb
216
+ - lib/mini_profiler/storage/abstract_store.rb
207
217
  - lib/mini_profiler/storage/file_store.rb
208
218
  - lib/mini_profiler/storage/memcache_store.rb
209
219
  - lib/mini_profiler/storage/memory_store.rb
210
- - lib/mini_profiler/storage/abstract_store.rb
211
220
  - lib/mini_profiler/storage/redis_store.rb
212
- - lib/mini_profiler/client_settings.rb
213
- - lib/mini_profiler/profiling_methods.rb
214
- - lib/mini_profiler/gc_profiler.rb
215
- - lib/mini_profiler/client_timer_struct.rb
216
- - lib/mini_profiler/sql_timer_struct.rb
217
- - lib/mini_profiler/config.rb
218
- - lib/mini_profiler/custom_timer_struct.rb
219
- - lib/mini_profiler/version.rb
220
221
  - lib/mini_profiler/timer_struct.rb
221
- - lib/mini_profiler/profiler.rb
222
- - lib/mini_profiler/request_timer_struct.rb
222
+ - lib/mini_profiler/version.rb
223
+ - lib/mini_profiler_rails/railtie.rb
223
224
  - lib/patches/net_patches.rb
224
225
  - lib/patches/sql_patches.rb
225
226
  - lib/rack-mini-profiler.rb
226
- - README.md
227
- - CHANGELOG
227
+ - rack-mini-profiler.gemspec
228
228
  homepage: http://miniprofiler.com
229
229
  licenses:
230
230
  - MIT
@@ -235,17 +235,17 @@ require_paths:
235
235
  - lib
236
236
  required_ruby_version: !ruby/object:Gem::Requirement
237
237
  requirements:
238
- - - '>='
238
+ - - ">="
239
239
  - !ruby/object:Gem::Version
240
240
  version: '0'
241
241
  required_rubygems_version: !ruby/object:Gem::Requirement
242
242
  requirements:
243
- - - '>='
243
+ - - ">="
244
244
  - !ruby/object:Gem::Version
245
245
  version: '0'
246
246
  requirements: []
247
247
  rubyforge_project:
248
- rubygems_version: 2.0.14
248
+ rubygems_version: 2.2.0
249
249
  signing_key:
250
250
  specification_version: 4
251
251
  summary: Profiles loading speed for rack applications.