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 +4 -4
- data/CHANGELOG +7 -0
- data/README.md +99 -44
- data/lib/mini_profiler/profiler.rb +7 -5
- data/lib/mini_profiler_rails/railtie.rb +13 -5
- data/lib/patches/sql_patches.rb +13 -7
- data/rack-mini-profiler.gemspec +2 -2
- metadata +52 -52
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d38192262a50a132bef944ea6508e5c2edd65d30
|
4
|
+
data.tar.gz: 3f9c5065465f08cdf643b701185b383eaa04b182
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
|
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
|
-
##
|
107
|
+
## Configuration
|
69
108
|
|
70
|
-
|
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
|
-
|
113
|
+
### Storage
|
73
114
|
|
74
|
-
rack-mini-profiler stores
|
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
|
-
|
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
|
-
|
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
|
-
|
120
|
-
$ rake spec
|
121
|
-
```
|
164
|
+
The available configuration options are:
|
122
165
|
|
123
|
-
|
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
|
-
|
176
|
+
### Custom middleware ordering (required if using `Rack::Deflate` with Rails)
|
126
177
|
|
127
|
-
|
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
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
Rack::MiniProfiler
|
139
|
-
|
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: #{
|
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
|
-
##
|
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
|
-
|
240
|
+
```
|
241
|
+
$ rake build
|
242
|
+
$ rake spec
|
243
|
+
```
|
189
244
|
|
190
|
-
|
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
|
-
|
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=(
|
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[
|
289
|
-
sample_rate = match_data[
|
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
|
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
|
-
|
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
|
-
|
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
|
-
|
46
|
-
|
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
|
data/lib/patches/sql_patches.rb
CHANGED
@@ -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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
216
|
+
::Rack::MiniProfiler.record_sql(data, elapsed_time)
|
211
217
|
|
212
218
|
result
|
213
219
|
end
|
data/rack-mini-profiler.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = "rack-mini-profiler"
|
3
|
-
s.version = "0.9.
|
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.
|
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-
|
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
|
-
-
|
193
|
-
-
|
194
|
-
- lib/html/
|
195
|
-
- lib/html/
|
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/
|
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/
|
222
|
-
- lib/
|
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
|
-
-
|
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
|
248
|
+
rubygems_version: 2.2.0
|
249
249
|
signing_key:
|
250
250
|
specification_version: 4
|
251
251
|
summary: Profiles loading speed for rack applications.
|