rack-mini-profiler 0.1.17 → 0.1.22
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.
Potentially problematic release.
This version of rack-mini-profiler might be problematic. Click here for more details.
- data/{CHANGELOG → Ruby/CHANGELOG} +107 -83
- data/{README.md → Ruby/README.md} +1 -1
- data/{lib → Ruby/lib}/html/includes.css +0 -0
- data/{lib → Ruby/lib}/html/includes.js +2 -1
- data/{lib → Ruby/lib}/html/includes.less +0 -0
- data/{lib → Ruby/lib}/html/includes.tmpl +0 -0
- data/{lib → Ruby/lib}/html/jquery.1.7.1.js +0 -0
- data/{lib → Ruby/lib}/html/jquery.tmpl.js +0 -0
- data/{lib → Ruby/lib}/html/list.css +0 -0
- data/{lib → Ruby/lib}/html/list.js +0 -0
- data/{lib → Ruby/lib}/html/list.tmpl +0 -0
- data/{lib → Ruby/lib}/html/profile_handler.js +0 -0
- data/{lib → Ruby/lib}/html/share.html +0 -0
- data/{lib → Ruby/lib}/mini_profiler/client_settings.rb +0 -0
- data/{lib → Ruby/lib}/mini_profiler/client_timer_struct.rb +0 -0
- data/{lib → Ruby/lib}/mini_profiler/config.rb +0 -0
- data/{lib → Ruby/lib}/mini_profiler/context.rb +0 -0
- data/Ruby/lib/mini_profiler/gc_profiler.rb +103 -0
- data/{lib → Ruby/lib}/mini_profiler/page_timer_struct.rb +0 -0
- data/{lib → Ruby/lib}/mini_profiler/profiler.rb +22 -6
- data/{lib → Ruby/lib}/mini_profiler/profiling_methods.rb +26 -2
- data/{lib → Ruby/lib}/mini_profiler/request_timer_struct.rb +0 -0
- data/{lib → Ruby/lib}/mini_profiler/sql_timer_struct.rb +0 -0
- data/{lib → Ruby/lib}/mini_profiler/storage/abstract_store.rb +0 -0
- data/{lib → Ruby/lib}/mini_profiler/storage/file_store.rb +0 -0
- data/Ruby/lib/mini_profiler/storage/memcache_store.rb +51 -0
- data/{lib → Ruby/lib}/mini_profiler/storage/memory_store.rb +0 -0
- data/{lib → Ruby/lib}/mini_profiler/storage/redis_store.rb +0 -0
- data/{lib → Ruby/lib}/mini_profiler/timer_struct.rb +0 -0
- data/{lib → Ruby/lib}/mini_profiler_rails/railtie.rb +2 -1
- data/{lib → Ruby/lib}/patches/sql_patches.rb +0 -0
- data/{lib → Ruby/lib}/rack-mini-profiler.rb +1 -1
- data/rack-mini-profiler.gemspec +8 -6
- metadata +42 -40
@@ -1,83 +1,107 @@
|
|
1
|
-
28-June-2012 - Sam
|
2
|
-
|
3
|
-
* Started change log
|
4
|
-
* Corrected profiler so it properly captures POST requests (was supressing non 200s)
|
5
|
-
* Amended Rack.MiniProfiler.config[:user_provider] to use ip addres for identity
|
6
|
-
* Fixed bug where unviewed missing ids never got cleared
|
7
|
-
* Supress all '/assets/' in the rails tie (makes debugging easier)
|
8
|
-
* record_sql was mega buggy
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
*
|
17
|
-
*
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
*
|
24
|
-
*
|
25
|
-
*
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
*
|
31
|
-
*
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
*
|
37
|
-
* Fixed
|
38
|
-
*
|
39
|
-
*
|
40
|
-
*
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
*
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
*
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
*
|
60
|
-
*
|
61
|
-
* added setting config.
|
62
|
-
*
|
63
|
-
*
|
64
|
-
*
|
65
|
-
*
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
*
|
71
|
-
* fixed
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
*
|
77
|
-
* fixed
|
78
|
-
*
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
*
|
1
|
+
28-June-2012 - Sam
|
2
|
+
|
3
|
+
* Started change log
|
4
|
+
* Corrected profiler so it properly captures POST requests (was supressing non 200s)
|
5
|
+
* Amended Rack.MiniProfiler.config[:user_provider] to use ip addres for identity
|
6
|
+
* Fixed bug where unviewed missing ids never got cleared
|
7
|
+
* Supress all '/assets/' in the rails tie (makes debugging easier)
|
8
|
+
* record_sql was mega buggy
|
9
|
+
* added MemcacheStore
|
10
|
+
|
11
|
+
9-July-2012 - Sam
|
12
|
+
|
13
|
+
* Cleaned up mechanism for profiling in production, all you need to do now
|
14
|
+
is call Rack::MiniProfiler.authorize_request to get profiling working in
|
15
|
+
production
|
16
|
+
* Added option to display full backtraces pp=full-backtrace
|
17
|
+
* Cleaned up railties, got rid of the post authorize callback
|
18
|
+
* Version 0.1.3
|
19
|
+
|
20
|
+
12-July-2012 - Sam
|
21
|
+
|
22
|
+
* Fixed incorrect profiling steps (was not indenting or measuring start time right
|
23
|
+
* Implemented native PG and MySql2 interceptors, this gives way more accurate times
|
24
|
+
* Refactored context so its a proper class and not a hash
|
25
|
+
* Added some more client probing built in to rails
|
26
|
+
* More tests
|
27
|
+
|
28
|
+
18-July-2012 - Sam
|
29
|
+
|
30
|
+
* Added First Paint time for chrome
|
31
|
+
* Bug fix to ensure non Rails installs have mini profiler
|
32
|
+
* Version 0.1.7
|
33
|
+
|
34
|
+
30-July-2012 - Sam
|
35
|
+
|
36
|
+
* Made compliant with ancient versions of Rack (including Rack used by Rails2)
|
37
|
+
* Fixed broken share link
|
38
|
+
* Fixed crashes on startup (in MemoryStore and FileStore)
|
39
|
+
* Version 0.1.8
|
40
|
+
* Unicode fix
|
41
|
+
* Version 0.1.9
|
42
|
+
|
43
|
+
7-August-2012 - Sam
|
44
|
+
|
45
|
+
* Added option to disable profiler for the current session (pp=disable / pp=enable)
|
46
|
+
* yajl compatability contributed by Sven Riedel
|
47
|
+
|
48
|
+
10-August-2012 - Sam
|
49
|
+
|
50
|
+
* Added basic prepared statement profiling for postgres
|
51
|
+
|
52
|
+
20-August-2012 - Sam
|
53
|
+
|
54
|
+
* 1.12.pre
|
55
|
+
* Cap X-MiniProfiler-Ids at 10, otherwise the header can get killed
|
56
|
+
|
57
|
+
3-September-2012 - Sam
|
58
|
+
|
59
|
+
* 1.13.pre
|
60
|
+
* pg gem prepared statements were not being logged correctly
|
61
|
+
* added setting config.backtrace_ignores = [] - an array of regexes that match on caller lines that get ignored
|
62
|
+
* added setting config.backtrace_includes = [] - an array of regexes that get included in the trace by default
|
63
|
+
* cleaned up the way client settings are stored
|
64
|
+
* made pp=full-backtrace "sticky"
|
65
|
+
* added pp=normal-backtrace to clear the "sticky" state
|
66
|
+
* change "pp=sample" to work with "caller" no need for stack trace gem
|
67
|
+
|
68
|
+
4-September-2012 - Sam
|
69
|
+
|
70
|
+
* 1.15.pre
|
71
|
+
* fixed annoying bug where client settings were not sticking
|
72
|
+
* fixed long standing issue with Rack::ConditionalGet stopping MiniProfiler from working properly
|
73
|
+
|
74
|
+
5-September-2012 - Sam
|
75
|
+
|
76
|
+
* 1.16
|
77
|
+
* fixed long standing problem specs (issue with memory store)
|
78
|
+
* fixed issue where profiler would be dumped when you got a 404 in production (and any time rails is bypassed)
|
79
|
+
* implemented stacktrace properly
|
80
|
+
|
81
|
+
9-September-2012 - Sam
|
82
|
+
|
83
|
+
* 1.17
|
84
|
+
* pp=sample was bust unless stacktrace was installed
|
85
|
+
|
86
|
+
10-September-2012 - Sam
|
87
|
+
|
88
|
+
* 1.19
|
89
|
+
* fix compat issue with 1.8.7
|
90
|
+
|
91
|
+
12-September-2012 - Sam
|
92
|
+
|
93
|
+
* 1.20
|
94
|
+
* Added pp=profile-gc , it allows you to profile the GC in Ruby 1.9.3
|
95
|
+
|
96
|
+
17-September-2012
|
97
|
+
* 1.21
|
98
|
+
* New MemchacedStore
|
99
|
+
* Rails 4 support
|
100
|
+
|
101
|
+
17-September-2012
|
102
|
+
* Allow rack-mini-profiler to be sourced from github
|
103
|
+
* Extracted the pp=profile-gc-time out, the object space profiler needs to disable gc
|
104
|
+
|
105
|
+
20-September-2010
|
106
|
+
* 1.22
|
107
|
+
* Fix permission issue in the gem
|
@@ -56,7 +56,7 @@ By default, rack-mini-profiler stores its results in a memory store:
|
|
56
56
|
Rack::MiniProfiler.config.storage = Rack::MiniProfiler::MemoryStore
|
57
57
|
```
|
58
58
|
|
59
|
-
There are 2 other available storage engines, `RedisStore` and `FileStore`.
|
59
|
+
There are 2 other available storage engines, `RedisStore`, `MemcacheStore`, and `FileStore`.
|
60
60
|
|
61
61
|
MemoryStore is stores results in a processes heap - something that does not work well in a multi process environment.
|
62
62
|
FileStore stores results in the file system - something that may not work well in a multi machine environment.
|
File without changes
|
@@ -449,11 +449,12 @@ var MiniProfiler = (function ($) {
|
|
449
449
|
};
|
450
450
|
|
451
451
|
// fetch profile results for any ajax calls
|
452
|
+
// note, this does not use $ cause we want to hook into the main jQuery
|
452
453
|
if (jQuery && jQuery(document) && jQuery(document).ajaxComplete) {
|
453
454
|
jQuery(document).ajaxComplete(jQueryAjaxComplete);
|
454
455
|
}
|
455
456
|
|
456
|
-
if (jQuery(document).ajaxStart)
|
457
|
+
if (jQuery && jQuery(document).ajaxStart)
|
457
458
|
jQuery(document).ajaxStart(function () { ajaxStartTime = new Date(); });
|
458
459
|
|
459
460
|
// fetch results after ASP Ajax calls
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -0,0 +1,103 @@
|
|
1
|
+
class Rack::MiniProfiler::GCProfiler
|
2
|
+
|
3
|
+
def object_space_stats
|
4
|
+
stats = {}
|
5
|
+
ids = Set.new
|
6
|
+
i=0
|
7
|
+
ObjectSpace.each_object { |o|
|
8
|
+
i = stats[o.class] || 0
|
9
|
+
i += 1
|
10
|
+
stats[o.class] = i
|
11
|
+
ids << o.object_id if Integer === o.object_id
|
12
|
+
}
|
13
|
+
{:stats => stats, :ids => ids}
|
14
|
+
end
|
15
|
+
|
16
|
+
def diff_object_stats(before,after)
|
17
|
+
diff = {}
|
18
|
+
after.each do |k,v|
|
19
|
+
diff[k] = v - (before[k] || 0)
|
20
|
+
end
|
21
|
+
before.each do |k,v|
|
22
|
+
diff[k] = 0 - v unless after[k]
|
23
|
+
end
|
24
|
+
|
25
|
+
diff
|
26
|
+
end
|
27
|
+
|
28
|
+
def analyze_strings(ids_before,ids_after)
|
29
|
+
result = {}
|
30
|
+
ids_after.each do |id|
|
31
|
+
obj = ObjectSpace._id2ref(id)
|
32
|
+
if String === obj && !ids_before.include?(obj.object_id)
|
33
|
+
result[obj] ||= 0
|
34
|
+
result[obj] += 1
|
35
|
+
end
|
36
|
+
end
|
37
|
+
result
|
38
|
+
end
|
39
|
+
|
40
|
+
def profile_gc_time(app,env)
|
41
|
+
body = []
|
42
|
+
|
43
|
+
begin
|
44
|
+
GC::Profiler.clear
|
45
|
+
GC::Profiler.enable
|
46
|
+
b = app.call(env)[2]
|
47
|
+
b.close if b.respond_to? :close
|
48
|
+
body << "GC Profiler ran during this request, if it fired you will see the cost below:\n\n"
|
49
|
+
body << GC::Profiler.result
|
50
|
+
ensure
|
51
|
+
GC.enable
|
52
|
+
GC::Profiler.disable
|
53
|
+
end
|
54
|
+
|
55
|
+
return [200, {'Content-Type' => 'text/plain'}, body]
|
56
|
+
end
|
57
|
+
|
58
|
+
def profile_gc(app,env)
|
59
|
+
|
60
|
+
body = [];
|
61
|
+
|
62
|
+
stat_before,stat_after,diff,string_analysis = nil
|
63
|
+
begin
|
64
|
+
GC.disable
|
65
|
+
stat_before = object_space_stats
|
66
|
+
b = app.call(env)[2]
|
67
|
+
b.close if b.respond_to? :close
|
68
|
+
stat_after = object_space_stats
|
69
|
+
|
70
|
+
diff = diff_object_stats(stat_before[:stats],stat_after[:stats])
|
71
|
+
string_analysis = analyze_strings(stat_before[:ids], stat_after[:ids])
|
72
|
+
ensure
|
73
|
+
GC.enable
|
74
|
+
end
|
75
|
+
|
76
|
+
|
77
|
+
body << "
|
78
|
+
ObjectSpace delta caused by request:
|
79
|
+
--------------------------------------------\n"
|
80
|
+
diff.to_a.reject{|k,v| v == 0}.sort{|x,y| y[1] <=> x[1]}.each do |k,v|
|
81
|
+
body << "#{k} : #{v}\n" if v != 0
|
82
|
+
end
|
83
|
+
|
84
|
+
body << "\n
|
85
|
+
ObjectSpace stats:
|
86
|
+
-----------------\n"
|
87
|
+
|
88
|
+
stat_after[:stats].to_a.sort{|x,y| y[1] <=> x[1]}.each do |k,v|
|
89
|
+
body << "#{k} : #{v}\n"
|
90
|
+
end
|
91
|
+
|
92
|
+
|
93
|
+
body << "\n
|
94
|
+
String stats:
|
95
|
+
------------\n"
|
96
|
+
|
97
|
+
string_analysis.to_a.sort{|x,y| y[1] <=> x[1] }.take(1000).each do |string,count|
|
98
|
+
body << "#{count} : #{string}\n"
|
99
|
+
end
|
100
|
+
|
101
|
+
return [200, {'Content-Type' => 'text/plain'}, body]
|
102
|
+
end
|
103
|
+
end
|
File without changes
|
@@ -7,6 +7,7 @@ require 'mini_profiler/sql_timer_struct'
|
|
7
7
|
require 'mini_profiler/client_timer_struct'
|
8
8
|
require 'mini_profiler/request_timer_struct'
|
9
9
|
require 'mini_profiler/storage/abstract_store'
|
10
|
+
require 'mini_profiler/storage/memcache_store'
|
10
11
|
require 'mini_profiler/storage/memory_store'
|
11
12
|
require 'mini_profiler/storage/redis_store'
|
12
13
|
require 'mini_profiler/storage/file_store'
|
@@ -14,12 +15,14 @@ require 'mini_profiler/config'
|
|
14
15
|
require 'mini_profiler/profiling_methods'
|
15
16
|
require 'mini_profiler/context'
|
16
17
|
require 'mini_profiler/client_settings'
|
18
|
+
require 'mini_profiler/gc_profiler'
|
17
19
|
|
18
20
|
module Rack
|
19
21
|
|
20
22
|
class MiniProfiler
|
21
23
|
|
22
|
-
|
24
|
+
# we really should add a cleaner way to version JS and includes
|
25
|
+
VERSION = '108'.freeze
|
23
26
|
|
24
27
|
class << self
|
25
28
|
|
@@ -208,6 +211,20 @@ module Rack
|
|
208
211
|
return [status,headers,body]
|
209
212
|
end
|
210
213
|
|
214
|
+
if query_string =~ /pp=profile-gc/
|
215
|
+
# begin
|
216
|
+
if query_string =~ /pp=profile-gc-time/
|
217
|
+
return Rack::MiniProfiler::GCProfiler.new.profile_gc_time(@app, env)
|
218
|
+
else
|
219
|
+
return Rack::MiniProfiler::GCProfiler.new.profile_gc(@app, env)
|
220
|
+
end
|
221
|
+
# rescue => e
|
222
|
+
# p e
|
223
|
+
# e.backtrace.each do |s|
|
224
|
+
# puts s
|
225
|
+
# end
|
226
|
+
# end
|
227
|
+
end
|
211
228
|
MiniProfiler.create_current(env, @config)
|
212
229
|
MiniProfiler.deauthorize_request if @config.authorization_mode == :whitelist
|
213
230
|
if query_string =~ /pp=normal-backtrace/
|
@@ -295,7 +312,7 @@ module Rack
|
|
295
312
|
|
296
313
|
if query_string =~ /pp=help/
|
297
314
|
body.close if body.respond_to? :close
|
298
|
-
return help(
|
315
|
+
return help(client_settings)
|
299
316
|
end
|
300
317
|
|
301
318
|
page_struct = current.page_struct
|
@@ -372,7 +389,7 @@ module Rack
|
|
372
389
|
[200, headers, [body]]
|
373
390
|
end
|
374
391
|
|
375
|
-
def help(
|
392
|
+
def help(client_settings)
|
376
393
|
headers = {'Content-Type' => 'text/plain'}
|
377
394
|
body = "Append the following to your query string:
|
378
395
|
|
@@ -385,10 +402,9 @@ module Rack
|
|
385
402
|
pp=sample : sample stack traces and return a report isolating heavy usage (experimental works best with the stacktrace gem)
|
386
403
|
pp=disable : disable profiling for this session
|
387
404
|
pp=enable : enable profiling for this session (if previously disabled)
|
405
|
+
pp=profile-gc: perform gc profiling on this request, analyzes ObjectSpace generated by request (ruby 1.9.3 only)
|
406
|
+
pp=profile-gc-time: perform built-in gc profiling on this request (ruby 1.9.3 only)
|
388
407
|
"
|
389
|
-
if (category == :stacktrace)
|
390
|
-
body = "pp=stacktrace requires the stacktrace gem - add gem 'stacktrace' to your Gemfile"
|
391
|
-
end
|
392
408
|
|
393
409
|
client_settings.write!(headers)
|
394
410
|
[200, headers, [body]]
|
@@ -8,6 +8,22 @@ module Rack
|
|
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
|
+
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
|
17
|
+
end
|
18
|
+
|
19
|
+
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
|
25
|
+
end
|
26
|
+
|
11
27
|
# perform a profiling step on given block
|
12
28
|
def step(name, opts = nil)
|
13
29
|
if current
|
@@ -55,8 +71,16 @@ module Rack
|
|
55
71
|
return self.send without_profiling, *args, &orig unless Rack::MiniProfiler.current
|
56
72
|
|
57
73
|
name = default_name
|
58
|
-
|
59
|
-
|
74
|
+
if blk
|
75
|
+
name =
|
76
|
+
if respond_to?(:instance_exec)
|
77
|
+
instance_exec(*args, &blk)
|
78
|
+
else
|
79
|
+
# deprecated in Rails 4.x
|
80
|
+
blk.bind(self).call(*args)
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
60
84
|
parent_timer = Rack::MiniProfiler.current.current_timer
|
61
85
|
page_struct = Rack::MiniProfiler.current.page_struct
|
62
86
|
result = nil
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -0,0 +1,51 @@
|
|
1
|
+
module Rack
|
2
|
+
class MiniProfiler
|
3
|
+
class MemcacheStore < AbstractStore
|
4
|
+
|
5
|
+
EXPIRE_SECONDS = 60*60*24
|
6
|
+
MAX_RETRIES = 10
|
7
|
+
|
8
|
+
def initialize(client = nil, prefix = "MPMemcacheStore")
|
9
|
+
require 'dalli' unless defined? Dalli
|
10
|
+
@prefix = prefix
|
11
|
+
@client = client || Dalli::Client.new(['localhost:11211'])
|
12
|
+
end
|
13
|
+
|
14
|
+
def save(page_struct)
|
15
|
+
@client.set("#{@prefix}#{page_struct['Id']}", Marshal::dump(page_struct), EXPIRE_SECONDS)
|
16
|
+
end
|
17
|
+
|
18
|
+
def load(id)
|
19
|
+
raw = @client.get("#{@prefix}#{id}")
|
20
|
+
if raw
|
21
|
+
Marshal::load raw
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def set_unviewed(user, id)
|
26
|
+
@client.add("#{@prefix}-#{user}-v", [], EXPIRE_SECONDS)
|
27
|
+
MAX_RETRIES.times do
|
28
|
+
break if @client.cas("#{@prefix}-#{user}-v", EXPIRE_SECONDS) do |ids|
|
29
|
+
ids << id unless ids.include?(id)
|
30
|
+
ids
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def set_viewed(user, id)
|
36
|
+
@client.add("#{@prefix}-#{user}-v", [], EXPIRE_SECONDS)
|
37
|
+
MAX_RETRIES.times do
|
38
|
+
break if @client.cas("#{@prefix}-#{user}-v", EXPIRE_SECONDS) do |ids|
|
39
|
+
ids.delete id
|
40
|
+
ids
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def get_unviewed_ids(user)
|
46
|
+
@client.get("#{@prefix}-#{user}-v") || []
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
data/rack-mini-profiler.gemspec
CHANGED
@@ -1,17 +1,17 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = "rack-mini-profiler"
|
3
|
-
s.version = "0.1.
|
3
|
+
s.version = "0.1.22"
|
4
4
|
s.summary = "Profiles loading speed for rack applications."
|
5
|
-
s.authors = ["
|
6
|
-
s.description = "
|
5
|
+
s.authors = ["Sam Saffron", "Robin Ward","Aleks Totic"]
|
6
|
+
s.description = "Profiling toolkit for Rack applications with Rails integration. Client Side profiling, DB profiling and Server profiling."
|
7
7
|
s.email = "sam.saffron@gmail.com"
|
8
8
|
s.homepage = "http://miniprofiler.com"
|
9
9
|
s.files = [
|
10
10
|
'rack-mini-profiler.gemspec',
|
11
|
-
].concat( Dir.glob('lib/**/*').reject {|f| File.directory?(f) || f =~ /~$/ } )
|
11
|
+
].concat( Dir.glob('Ruby/lib/**/*').reject {|f| File.directory?(f) || f =~ /~$/ } )
|
12
12
|
s.extra_rdoc_files = [
|
13
|
-
"README.md",
|
14
|
-
"CHANGELOG"
|
13
|
+
"Ruby/README.md",
|
14
|
+
"Ruby/CHANGELOG"
|
15
15
|
]
|
16
16
|
s.add_runtime_dependency 'rack', '>= 1.1.3'
|
17
17
|
if RUBY_VERSION < "1.9"
|
@@ -21,4 +21,6 @@ Gem::Specification.new do |s|
|
|
21
21
|
s.add_development_dependency 'rake'
|
22
22
|
s.add_development_dependency 'rack-test'
|
23
23
|
s.add_development_dependency 'activerecord', '~> 3.0'
|
24
|
+
|
25
|
+
s.require_paths = ["Ruby/lib"]
|
24
26
|
end
|
metadata
CHANGED
@@ -1,17 +1,17 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rack-mini-profiler
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.22
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
|
-
- Aleks Totic
|
9
8
|
- Sam Saffron
|
10
9
|
- Robin Ward
|
10
|
+
- Aleks Totic
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2012-09-
|
14
|
+
date: 2012-09-20 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: rack
|
@@ -77,52 +77,54 @@ dependencies:
|
|
77
77
|
- - ~>
|
78
78
|
- !ruby/object:Gem::Version
|
79
79
|
version: '3.0'
|
80
|
-
description:
|
81
|
-
|
80
|
+
description: Profiling toolkit for Rack applications with Rails integration. Client
|
81
|
+
Side profiling, DB profiling and Server profiling.
|
82
82
|
email: sam.saffron@gmail.com
|
83
83
|
executables: []
|
84
84
|
extensions: []
|
85
85
|
extra_rdoc_files:
|
86
|
-
- README.md
|
87
|
-
- CHANGELOG
|
86
|
+
- Ruby/README.md
|
87
|
+
- Ruby/CHANGELOG
|
88
88
|
files:
|
89
89
|
- rack-mini-profiler.gemspec
|
90
|
-
- lib/mini_profiler/sql_timer_struct.rb
|
91
|
-
- lib/mini_profiler/request_timer_struct.rb
|
92
|
-
- lib/mini_profiler/timer_struct.rb
|
93
|
-
- lib/mini_profiler/page_timer_struct.rb
|
94
|
-
- lib/mini_profiler/client_settings.rb
|
95
|
-
- lib/mini_profiler/context.rb
|
96
|
-
- lib/mini_profiler/config.rb
|
97
|
-
- lib/mini_profiler/profiling_methods.rb
|
98
|
-
- lib/mini_profiler/
|
99
|
-
- lib/mini_profiler/
|
100
|
-
- lib/mini_profiler/
|
101
|
-
- lib/mini_profiler/storage/
|
102
|
-
- lib/mini_profiler/storage/
|
103
|
-
- lib/mini_profiler/storage/
|
104
|
-
- lib/
|
105
|
-
- lib/
|
106
|
-
- lib/
|
107
|
-
- lib/html/
|
108
|
-
- lib/html/includes.
|
109
|
-
- lib/html/
|
110
|
-
- lib/html/includes.
|
111
|
-
- lib/html/
|
112
|
-
- lib/html/
|
113
|
-
- lib/html/
|
114
|
-
- lib/html/
|
115
|
-
- lib/html/
|
116
|
-
- lib/
|
117
|
-
- lib/
|
118
|
-
-
|
119
|
-
-
|
90
|
+
- Ruby/lib/mini_profiler/sql_timer_struct.rb
|
91
|
+
- Ruby/lib/mini_profiler/request_timer_struct.rb
|
92
|
+
- Ruby/lib/mini_profiler/timer_struct.rb
|
93
|
+
- Ruby/lib/mini_profiler/page_timer_struct.rb
|
94
|
+
- Ruby/lib/mini_profiler/client_settings.rb
|
95
|
+
- Ruby/lib/mini_profiler/context.rb
|
96
|
+
- Ruby/lib/mini_profiler/config.rb
|
97
|
+
- Ruby/lib/mini_profiler/profiling_methods.rb
|
98
|
+
- Ruby/lib/mini_profiler/gc_profiler.rb
|
99
|
+
- Ruby/lib/mini_profiler/client_timer_struct.rb
|
100
|
+
- Ruby/lib/mini_profiler/profiler.rb
|
101
|
+
- Ruby/lib/mini_profiler/storage/memory_store.rb
|
102
|
+
- Ruby/lib/mini_profiler/storage/file_store.rb
|
103
|
+
- Ruby/lib/mini_profiler/storage/redis_store.rb
|
104
|
+
- Ruby/lib/mini_profiler/storage/abstract_store.rb
|
105
|
+
- Ruby/lib/mini_profiler/storage/memcache_store.rb
|
106
|
+
- Ruby/lib/rack-mini-profiler.rb
|
107
|
+
- Ruby/lib/html/jquery.1.7.1.js
|
108
|
+
- Ruby/lib/html/includes.tmpl
|
109
|
+
- Ruby/lib/html/share.html
|
110
|
+
- Ruby/lib/html/includes.less
|
111
|
+
- Ruby/lib/html/list.css
|
112
|
+
- Ruby/lib/html/includes.js
|
113
|
+
- Ruby/lib/html/jquery.tmpl.js
|
114
|
+
- Ruby/lib/html/list.tmpl
|
115
|
+
- Ruby/lib/html/profile_handler.js
|
116
|
+
- Ruby/lib/html/includes.css
|
117
|
+
- Ruby/lib/html/list.js
|
118
|
+
- Ruby/lib/mini_profiler_rails/railtie.rb
|
119
|
+
- Ruby/lib/patches/sql_patches.rb
|
120
|
+
- Ruby/README.md
|
121
|
+
- Ruby/CHANGELOG
|
120
122
|
homepage: http://miniprofiler.com
|
121
123
|
licenses: []
|
122
124
|
post_install_message:
|
123
125
|
rdoc_options: []
|
124
126
|
require_paths:
|
125
|
-
- lib
|
127
|
+
- Ruby/lib
|
126
128
|
required_ruby_version: !ruby/object:Gem::Requirement
|
127
129
|
none: false
|
128
130
|
requirements:
|
@@ -131,7 +133,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
131
133
|
version: '0'
|
132
134
|
segments:
|
133
135
|
- 0
|
134
|
-
hash:
|
136
|
+
hash: -138209491
|
135
137
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
136
138
|
none: false
|
137
139
|
requirements:
|
@@ -140,7 +142,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
140
142
|
version: '0'
|
141
143
|
segments:
|
142
144
|
- 0
|
143
|
-
hash:
|
145
|
+
hash: -138209491
|
144
146
|
requirements: []
|
145
147
|
rubyforge_project:
|
146
148
|
rubygems_version: 1.8.24
|