rack-mini-profiler 0.1.28 → 0.9.0
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.
- checksums.yaml +4 -4
- data/{Ruby/CHANGELOG → CHANGELOG} +27 -0
- data/{Ruby/README.md → README.md} +73 -31
- data/{Ruby/lib → lib}/html/includes.css +0 -0
- data/{Ruby/lib → lib}/html/includes.js +9 -8
- data/{Ruby/lib → lib}/html/includes.less +0 -0
- data/{Ruby/lib → lib}/html/includes.tmpl +3 -1
- data/{Ruby/lib → lib}/html/jquery.1.7.1.js +0 -0
- data/{Ruby/lib → lib}/html/jquery.tmpl.js +0 -0
- data/{Ruby/lib → lib}/html/list.css +2 -2
- data/{Ruby/lib → lib}/html/list.js +1 -1
- data/{Ruby/lib → lib}/html/list.tmpl +2 -2
- data/lib/html/profile_handler.js +1 -0
- data/{Ruby/lib → lib}/html/share.html +2 -2
- data/{Ruby/lib → lib}/mini_profiler/client_settings.rb +11 -11
- data/{Ruby/lib → lib}/mini_profiler/client_timer_struct.rb +0 -0
- data/{Ruby/lib → lib}/mini_profiler/config.rb +11 -4
- data/{Ruby/lib → lib}/mini_profiler/context.rb +1 -1
- data/{Ruby/lib → lib}/mini_profiler/custom_timer_struct.rb +0 -0
- data/lib/mini_profiler/gc_profiler.rb +181 -0
- data/{Ruby/lib → lib}/mini_profiler/page_timer_struct.rb +4 -4
- data/{Ruby/lib → lib}/mini_profiler/profiler.rb +165 -142
- data/{Ruby/lib → lib}/mini_profiler/profiling_methods.rb +31 -11
- data/{Ruby/lib → lib}/mini_profiler/request_timer_struct.rb +5 -5
- data/{Ruby/lib → lib}/mini_profiler/sql_timer_struct.rb +0 -0
- data/{Ruby/lib → lib}/mini_profiler/storage/abstract_store.rb +0 -0
- data/{Ruby/lib → lib}/mini_profiler/storage/file_store.rb +26 -4
- data/{Ruby/lib → lib}/mini_profiler/storage/memcache_store.rb +0 -0
- data/{Ruby/lib → lib}/mini_profiler/storage/memory_store.rb +25 -4
- data/{Ruby/lib → lib}/mini_profiler/storage/redis_store.rb +0 -0
- data/{Ruby/lib → lib}/mini_profiler/timer_struct.rb +0 -0
- data/lib/mini_profiler/version.rb +5 -0
- data/{Ruby/lib → lib}/mini_profiler_rails/railtie.rb +6 -2
- data/{Ruby/lib → lib}/patches/net_patches.rb +0 -0
- data/{Ruby/lib → lib}/patches/sql_patches.rb +3 -2
- data/{Ruby/lib → lib}/rack-mini-profiler.rb +0 -0
- data/rack-mini-profiler.gemspec +14 -6
- metadata +153 -43
- data/Ruby/lib/html/flamegraph.html +0 -351
- data/Ruby/lib/html/profile_handler.js +0 -1
- data/Ruby/lib/mini_profiler/flame_graph.rb +0 -54
- data/Ruby/lib/mini_profiler/gc_profiler.rb +0 -107
- data/Ruby/lib/mini_profiler/version.rb +0 -5
@@ -55,8 +55,16 @@ module Rack
|
|
55
55
|
end
|
56
56
|
end
|
57
57
|
|
58
|
-
def
|
59
|
-
|
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
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
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
|
File without changes
|
File without changes
|
@@ -2,6 +2,10 @@ module Rack
|
|
2
2
|
class MiniProfiler
|
3
3
|
class FileStore < AbstractStore
|
4
4
|
|
5
|
+
# Sub-class thread so we have a named thread (useful for debugging in Thread.list).
|
6
|
+
class CacheCleanupThread < Thread
|
7
|
+
end
|
8
|
+
|
5
9
|
class FileCache
|
6
10
|
def initialize(path, prefix)
|
7
11
|
@path = path
|
@@ -40,17 +44,35 @@ module Rack
|
|
40
44
|
@user_view_lock = Mutex.new
|
41
45
|
|
42
46
|
me = self
|
43
|
-
|
47
|
+
t = CacheCleanupThread.new do
|
48
|
+
interval = 10
|
49
|
+
cleanup_cache_cycle = 3600
|
50
|
+
cycle_count = 1
|
51
|
+
|
44
52
|
begin
|
45
|
-
|
53
|
+
until Thread.current[:should_exit] do
|
46
54
|
# TODO: a sane retry count before bailing
|
47
|
-
|
48
|
-
|
55
|
+
|
56
|
+
# We don't want to hit the filesystem every 10s to clean up the cache so we need to do a bit of
|
57
|
+
# accounting to avoid sleeping that entire time. We don't want to sleep for the entire period because
|
58
|
+
# it means the thread will stay live in hot deployment scenarios, keeping a potentially large memory
|
59
|
+
# graph from being garbage collected upon undeploy.
|
60
|
+
if cycle_count * interval >= cleanup_cache_cycle
|
61
|
+
cycle_count = 1
|
62
|
+
me.cleanup_cache
|
63
|
+
end
|
64
|
+
|
65
|
+
sleep(interval)
|
66
|
+
cycle_count += 1
|
49
67
|
end
|
50
68
|
rescue
|
51
69
|
# don't crash the thread, we can clean up next time
|
52
70
|
end
|
53
71
|
end
|
72
|
+
|
73
|
+
at_exit { t[:should_exit] = true }
|
74
|
+
|
75
|
+
t
|
54
76
|
end
|
55
77
|
|
56
78
|
def save(page_struct)
|
File without changes
|
@@ -2,6 +2,10 @@ module Rack
|
|
2
2
|
class MiniProfiler
|
3
3
|
class MemoryStore < AbstractStore
|
4
4
|
|
5
|
+
# Sub-class thread so we have a named thread (useful for debugging in Thread.list).
|
6
|
+
class CacheCleanupThread < Thread
|
7
|
+
end
|
8
|
+
|
5
9
|
EXPIRES_IN_SECONDS = 60 * 60 * 24
|
6
10
|
|
7
11
|
def initialize(args = nil)
|
@@ -14,12 +18,29 @@ module Rack
|
|
14
18
|
|
15
19
|
# TODO: fix it to use weak ref, trouble is may be broken in 1.9 so need to use the 'ref' gem
|
16
20
|
me = self
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
+
t = CacheCleanupThread.new do
|
22
|
+
interval = 10
|
23
|
+
cleanup_cache_cycle = 3600
|
24
|
+
cycle_count = 1
|
25
|
+
|
26
|
+
until Thread.current[:should_exit] do
|
27
|
+
# We don't want to hit the filesystem every 10s to clean up the cache so we need to do a bit of
|
28
|
+
# accounting to avoid sleeping that entire time. We don't want to sleep for the entire period because
|
29
|
+
# it means the thread will stay live in hot deployment scenarios, keeping a potentially large memory
|
30
|
+
# graph from being garbage collected upon undeploy.
|
31
|
+
if cycle_count * interval >= cleanup_cache_cycle
|
32
|
+
cycle_count = 1
|
33
|
+
me.cleanup_cache
|
34
|
+
end
|
35
|
+
|
36
|
+
sleep(interval)
|
37
|
+
cycle_count += 1
|
21
38
|
end
|
22
39
|
end
|
40
|
+
|
41
|
+
at_exit { t[:should_exit] = true }
|
42
|
+
|
43
|
+
t
|
23
44
|
end
|
24
45
|
|
25
46
|
def save(page_struct)
|
File without changes
|
File without changes
|
@@ -7,14 +7,14 @@ 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
|
10
|
+
c.pre_authorize_cb ||= lambda { |env|
|
11
11
|
!Rails.env.test?
|
12
12
|
}
|
13
13
|
|
14
14
|
c.skip_paths ||= []
|
15
15
|
|
16
16
|
if Rails.env.development?
|
17
|
-
c.skip_paths <<
|
17
|
+
c.skip_paths << app.config.assets.prefix
|
18
18
|
c.skip_schema_queries = true
|
19
19
|
end
|
20
20
|
|
@@ -22,6 +22,10 @@ module Rack::MiniProfilerRails
|
|
22
22
|
c.authorization_mode = :whitelist
|
23
23
|
end
|
24
24
|
|
25
|
+
if Rails.logger
|
26
|
+
c.logger = Rails.logger
|
27
|
+
end
|
28
|
+
|
25
29
|
# The file store is just so much less flaky
|
26
30
|
tmp = Rails.root.to_s + "/tmp/miniprofiler"
|
27
31
|
FileUtils.mkdir_p(tmp) unless File.exists?(tmp)
|
File without changes
|
@@ -200,7 +200,7 @@ if SqlPatches.class_exists?("RSolr::Connection") && RSolr::VERSION[0] != "0" #
|
|
200
200
|
|
201
201
|
data = "#{request_context[:method].upcase} #{request_context[:uri]}"
|
202
202
|
if request_context[:method] == :post and request_context[:data]
|
203
|
-
if request_context[:headers].include("Content-Type") and request_context[:headers]["Content-Type"] == "text/xml"
|
203
|
+
if request_context[:headers].include?("Content-Type") and request_context[:headers]["Content-Type"] == "text/xml"
|
204
204
|
# it's xml, unescaping isn't needed
|
205
205
|
data << "\n#{request_context[:data]}"
|
206
206
|
else
|
@@ -222,7 +222,8 @@ if SqlPatches.class_exists?("Sequel::Database") && !SqlPatches.patched?
|
|
222
222
|
class Database
|
223
223
|
alias_method :log_duration_original, :log_duration
|
224
224
|
def log_duration(duration, message)
|
225
|
-
|
225
|
+
# `duration` will be in seconds, but we need it in milliseconds for internal consistency.
|
226
|
+
::Rack::MiniProfiler.record_sql(message, duration * 1000)
|
226
227
|
log_duration_original(duration, message)
|
227
228
|
end
|
228
229
|
end
|
File without changes
|
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.
|
3
|
+
s.version = "0.9.0"
|
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."
|
@@ -9,10 +9,10 @@ Gem::Specification.new do |s|
|
|
9
9
|
s.license = "MIT"
|
10
10
|
s.files = [
|
11
11
|
'rack-mini-profiler.gemspec',
|
12
|
-
].concat( Dir.glob('
|
12
|
+
].concat( Dir.glob('lib/**/*').reject {|f| File.directory?(f) || f =~ /~$/ } )
|
13
13
|
s.extra_rdoc_files = [
|
14
|
-
"
|
15
|
-
"
|
14
|
+
"README.md",
|
15
|
+
"CHANGELOG"
|
16
16
|
]
|
17
17
|
s.add_runtime_dependency 'rack', '>= 1.1.3'
|
18
18
|
if RUBY_VERSION < "1.9"
|
@@ -22,6 +22,14 @@ Gem::Specification.new do |s|
|
|
22
22
|
s.add_development_dependency 'rake'
|
23
23
|
s.add_development_dependency 'rack-test'
|
24
24
|
s.add_development_dependency 'activerecord', '~> 3.0'
|
25
|
+
s.add_development_dependency 'dalli'
|
26
|
+
s.add_development_dependency 'rspec'
|
27
|
+
s.add_development_dependency 'ZenTest'
|
28
|
+
s.add_development_dependency 'autotest'
|
29
|
+
s.add_development_dependency 'redis'
|
30
|
+
s.add_development_dependency 'therubyracer'
|
31
|
+
s.add_development_dependency 'less'
|
32
|
+
s.add_development_dependency 'flamegraph'
|
25
33
|
|
26
|
-
s.require_paths = ["
|
27
|
-
end
|
34
|
+
s.require_paths = ["lib"]
|
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.
|
4
|
+
version: 0.9.0
|
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:
|
13
|
+
date: 2014-01-05 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rack
|
@@ -68,53 +68,163 @@ dependencies:
|
|
68
68
|
- - ~>
|
69
69
|
- !ruby/object:Gem::Version
|
70
70
|
version: '3.0'
|
71
|
+
- !ruby/object:Gem::Dependency
|
72
|
+
name: dalli
|
73
|
+
requirement: !ruby/object:Gem::Requirement
|
74
|
+
requirements:
|
75
|
+
- - '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
78
|
+
type: :development
|
79
|
+
prerelease: false
|
80
|
+
version_requirements: !ruby/object:Gem::Requirement
|
81
|
+
requirements:
|
82
|
+
- - '>='
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
version: '0'
|
85
|
+
- !ruby/object:Gem::Dependency
|
86
|
+
name: rspec
|
87
|
+
requirement: !ruby/object:Gem::Requirement
|
88
|
+
requirements:
|
89
|
+
- - '>='
|
90
|
+
- !ruby/object:Gem::Version
|
91
|
+
version: '0'
|
92
|
+
type: :development
|
93
|
+
prerelease: false
|
94
|
+
version_requirements: !ruby/object:Gem::Requirement
|
95
|
+
requirements:
|
96
|
+
- - '>='
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
version: '0'
|
99
|
+
- !ruby/object:Gem::Dependency
|
100
|
+
name: ZenTest
|
101
|
+
requirement: !ruby/object:Gem::Requirement
|
102
|
+
requirements:
|
103
|
+
- - '>='
|
104
|
+
- !ruby/object:Gem::Version
|
105
|
+
version: '0'
|
106
|
+
type: :development
|
107
|
+
prerelease: false
|
108
|
+
version_requirements: !ruby/object:Gem::Requirement
|
109
|
+
requirements:
|
110
|
+
- - '>='
|
111
|
+
- !ruby/object:Gem::Version
|
112
|
+
version: '0'
|
113
|
+
- !ruby/object:Gem::Dependency
|
114
|
+
name: autotest
|
115
|
+
requirement: !ruby/object:Gem::Requirement
|
116
|
+
requirements:
|
117
|
+
- - '>='
|
118
|
+
- !ruby/object:Gem::Version
|
119
|
+
version: '0'
|
120
|
+
type: :development
|
121
|
+
prerelease: false
|
122
|
+
version_requirements: !ruby/object:Gem::Requirement
|
123
|
+
requirements:
|
124
|
+
- - '>='
|
125
|
+
- !ruby/object:Gem::Version
|
126
|
+
version: '0'
|
127
|
+
- !ruby/object:Gem::Dependency
|
128
|
+
name: redis
|
129
|
+
requirement: !ruby/object:Gem::Requirement
|
130
|
+
requirements:
|
131
|
+
- - '>='
|
132
|
+
- !ruby/object:Gem::Version
|
133
|
+
version: '0'
|
134
|
+
type: :development
|
135
|
+
prerelease: false
|
136
|
+
version_requirements: !ruby/object:Gem::Requirement
|
137
|
+
requirements:
|
138
|
+
- - '>='
|
139
|
+
- !ruby/object:Gem::Version
|
140
|
+
version: '0'
|
141
|
+
- !ruby/object:Gem::Dependency
|
142
|
+
name: therubyracer
|
143
|
+
requirement: !ruby/object:Gem::Requirement
|
144
|
+
requirements:
|
145
|
+
- - '>='
|
146
|
+
- !ruby/object:Gem::Version
|
147
|
+
version: '0'
|
148
|
+
type: :development
|
149
|
+
prerelease: false
|
150
|
+
version_requirements: !ruby/object:Gem::Requirement
|
151
|
+
requirements:
|
152
|
+
- - '>='
|
153
|
+
- !ruby/object:Gem::Version
|
154
|
+
version: '0'
|
155
|
+
- !ruby/object:Gem::Dependency
|
156
|
+
name: less
|
157
|
+
requirement: !ruby/object:Gem::Requirement
|
158
|
+
requirements:
|
159
|
+
- - '>='
|
160
|
+
- !ruby/object:Gem::Version
|
161
|
+
version: '0'
|
162
|
+
type: :development
|
163
|
+
prerelease: false
|
164
|
+
version_requirements: !ruby/object:Gem::Requirement
|
165
|
+
requirements:
|
166
|
+
- - '>='
|
167
|
+
- !ruby/object:Gem::Version
|
168
|
+
version: '0'
|
169
|
+
- !ruby/object:Gem::Dependency
|
170
|
+
name: flamegraph
|
171
|
+
requirement: !ruby/object:Gem::Requirement
|
172
|
+
requirements:
|
173
|
+
- - '>='
|
174
|
+
- !ruby/object:Gem::Version
|
175
|
+
version: '0'
|
176
|
+
type: :development
|
177
|
+
prerelease: false
|
178
|
+
version_requirements: !ruby/object:Gem::Requirement
|
179
|
+
requirements:
|
180
|
+
- - '>='
|
181
|
+
- !ruby/object:Gem::Version
|
182
|
+
version: '0'
|
71
183
|
description: Profiling toolkit for Rack applications with Rails integration. Client
|
72
184
|
Side profiling, DB profiling and Server profiling.
|
73
185
|
email: sam.saffron@gmail.com
|
74
186
|
executables: []
|
75
187
|
extensions: []
|
76
188
|
extra_rdoc_files:
|
77
|
-
-
|
78
|
-
-
|
189
|
+
- README.md
|
190
|
+
- CHANGELOG
|
79
191
|
files:
|
80
192
|
- rack-mini-profiler.gemspec
|
81
|
-
-
|
82
|
-
-
|
83
|
-
-
|
84
|
-
-
|
85
|
-
-
|
86
|
-
-
|
87
|
-
-
|
88
|
-
-
|
89
|
-
-
|
90
|
-
-
|
91
|
-
-
|
92
|
-
-
|
93
|
-
-
|
94
|
-
-
|
95
|
-
-
|
96
|
-
-
|
97
|
-
-
|
98
|
-
-
|
99
|
-
-
|
100
|
-
-
|
101
|
-
-
|
102
|
-
-
|
103
|
-
-
|
104
|
-
-
|
105
|
-
-
|
106
|
-
-
|
107
|
-
-
|
108
|
-
-
|
109
|
-
-
|
110
|
-
-
|
111
|
-
-
|
112
|
-
-
|
113
|
-
-
|
114
|
-
-
|
115
|
-
-
|
116
|
-
- Ruby/README.md
|
117
|
-
- Ruby/CHANGELOG
|
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
|
198
|
+
- lib/html/includes.less
|
199
|
+
- lib/html/profile_handler.js
|
200
|
+
- lib/html/includes.tmpl
|
201
|
+
- lib/html/includes.js
|
202
|
+
- lib/html/list.js
|
203
|
+
- lib/html/jquery.1.7.1.js
|
204
|
+
- lib/html/includes.css
|
205
|
+
- lib/mini_profiler/context.rb
|
206
|
+
- lib/mini_profiler/page_timer_struct.rb
|
207
|
+
- lib/mini_profiler/storage/file_store.rb
|
208
|
+
- lib/mini_profiler/storage/memcache_store.rb
|
209
|
+
- lib/mini_profiler/storage/memory_store.rb
|
210
|
+
- lib/mini_profiler/storage/abstract_store.rb
|
211
|
+
- 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
|
+
- lib/mini_profiler/timer_struct.rb
|
221
|
+
- lib/mini_profiler/profiler.rb
|
222
|
+
- lib/mini_profiler/request_timer_struct.rb
|
223
|
+
- lib/patches/net_patches.rb
|
224
|
+
- lib/patches/sql_patches.rb
|
225
|
+
- lib/rack-mini-profiler.rb
|
226
|
+
- README.md
|
227
|
+
- CHANGELOG
|
118
228
|
homepage: http://miniprofiler.com
|
119
229
|
licenses:
|
120
230
|
- MIT
|
@@ -122,7 +232,7 @@ metadata: {}
|
|
122
232
|
post_install_message:
|
123
233
|
rdoc_options: []
|
124
234
|
require_paths:
|
125
|
-
-
|
235
|
+
- lib
|
126
236
|
required_ruby_version: !ruby/object:Gem::Requirement
|
127
237
|
requirements:
|
128
238
|
- - '>='
|
@@ -135,7 +245,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
135
245
|
version: '0'
|
136
246
|
requirements: []
|
137
247
|
rubyforge_project:
|
138
|
-
rubygems_version: 2.0.
|
248
|
+
rubygems_version: 2.0.14
|
139
249
|
signing_key:
|
140
250
|
specification_version: 4
|
141
251
|
summary: Profiles loading speed for rack applications.
|