rack-mini-profiler 0.1.30 → 0.9.2
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.md +149 -0
- data/README.md +271 -0
- 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 +1 -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 +0 -0
- 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 +0 -0
- data/{Ruby/lib → lib}/mini_profiler/profiler.rb +108 -123
- data/{Ruby/lib → lib}/mini_profiler/profiling_methods.rb +0 -0
- data/{Ruby/lib → lib}/mini_profiler/request_timer_struct.rb +0 -0
- 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 +23 -6
- data/{Ruby/lib → lib}/patches/net_patches.rb +0 -0
- data/{Ruby/lib → lib}/patches/sql_patches.rb +15 -8
- data/{Ruby/lib → lib}/rack-mini-profiler.rb +0 -0
- data/rack-mini-profiler.gemspec +24 -16
- metadata +163 -53
- data/Ruby/CHANGELOG +0 -156
- data/Ruby/README.md +0 -172
- 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
File without changes
|
File without changes
|
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
|
@@ -4,9 +4,15 @@ module Rack::MiniProfilerRails
|
|
4
4
|
|
5
5
|
# call direct if needed to do a defer init
|
6
6
|
def self.initialize!(app)
|
7
|
+
|
8
|
+
raise "MiniProfilerRails initialized twice. Set `require: false' for rack-mini-profiler in your Gemfile" if @already_initialized
|
9
|
+
|
7
10
|
c = Rack::MiniProfiler.config
|
8
11
|
|
9
12
|
# By default, only show the MiniProfiler in development mode, in production allow profiling if post_authorize_cb is set
|
13
|
+
#
|
14
|
+
# NOTE: this must be set here with = and not ||=
|
15
|
+
# The out of the box default is "true"
|
10
16
|
c.pre_authorize_cb = lambda { |env|
|
11
17
|
!Rails.env.test?
|
12
18
|
}
|
@@ -14,16 +20,21 @@ module Rack::MiniProfilerRails
|
|
14
20
|
c.skip_paths ||= []
|
15
21
|
|
16
22
|
if Rails.env.development?
|
17
|
-
c.skip_paths <<
|
23
|
+
c.skip_paths << app.config.assets.prefix if app.respond_to? :assets
|
18
24
|
c.skip_schema_queries = true
|
19
25
|
end
|
20
26
|
|
21
|
-
|
27
|
+
unless Rails.env.development? || Rails.env.test?
|
22
28
|
c.authorization_mode = :whitelist
|
23
29
|
end
|
24
30
|
|
31
|
+
if Rails.logger
|
32
|
+
c.logger = Rails.logger
|
33
|
+
end
|
34
|
+
|
25
35
|
# The file store is just so much less flaky
|
26
|
-
|
36
|
+
base_path = Rails.application.config.paths['tmp'].first rescue "#{Rails.root}/tmp"
|
37
|
+
tmp = base_path + '/miniprofiler'
|
27
38
|
FileUtils.mkdir_p(tmp) unless File.exists?(tmp)
|
28
39
|
|
29
40
|
c.storage_options = {:path => tmp}
|
@@ -32,14 +43,20 @@ module Rack::MiniProfilerRails
|
|
32
43
|
# Quiet the SQL stack traces
|
33
44
|
c.backtrace_remove = Rails.root.to_s + "/"
|
34
45
|
c.backtrace_includes = [/^\/?(app|config|lib|test)/]
|
35
|
-
c.skip_schema_queries =
|
46
|
+
c.skip_schema_queries = (Rails.env.development? || Rails.env.test?)
|
36
47
|
|
37
48
|
# Install the Middleware
|
38
49
|
app.middleware.insert(0, Rack::MiniProfiler)
|
39
50
|
|
40
51
|
# Attach to various Rails methods
|
41
|
-
|
42
|
-
|
52
|
+
ActiveSupport.on_load(:action_controller) do
|
53
|
+
::Rack::MiniProfiler.profile_method(ActionController::Base, :process) {|action| "Executing action: #{action}"}
|
54
|
+
end
|
55
|
+
ActiveSupport.on_load(:action_view) do
|
56
|
+
::Rack::MiniProfiler.profile_method(ActionView::Template, :render) {|x,y| "Rendering: #{@virtual_path}"}
|
57
|
+
end
|
58
|
+
|
59
|
+
@already_initialized = true
|
43
60
|
end
|
44
61
|
|
45
62
|
class Railtie < ::Rails::Railtie
|
File without changes
|
@@ -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
|
@@ -222,7 +228,8 @@ if SqlPatches.class_exists?("Sequel::Database") && !SqlPatches.patched?
|
|
222
228
|
class Database
|
223
229
|
alias_method :log_duration_original, :log_duration
|
224
230
|
def log_duration(duration, message)
|
225
|
-
|
231
|
+
# `duration` will be in seconds, but we need it in milliseconds for internal consistency.
|
232
|
+
::Rack::MiniProfiler.record_sql(message, duration * 1000)
|
226
233
|
log_duration_original(duration, message)
|
227
234
|
end
|
228
235
|
end
|
File without changes
|
data/rack-mini-profiler.gemspec
CHANGED
@@ -1,20 +1,20 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
2
|
+
s.name = "rack-mini-profiler"
|
3
|
+
s.version = "0.9.2"
|
4
|
+
s.summary = "Profiles loading speed for rack applications."
|
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
|
+
s.email = "sam.saffron@gmail.com"
|
8
|
+
s.homepage = "http://miniprofiler.com"
|
9
9
|
s.license = "MIT"
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
"
|
16
|
-
|
17
|
-
|
10
|
+
s.files = [
|
11
|
+
'rack-mini-profiler.gemspec',
|
12
|
+
].concat( Dir.glob('lib/**/*').reject {|f| File.directory?(f) || f =~ /~$/ } )
|
13
|
+
s.extra_rdoc_files = [
|
14
|
+
"README.md",
|
15
|
+
"CHANGELOG.md"
|
16
|
+
]
|
17
|
+
s.add_runtime_dependency 'rack', '>= 1.1.3'
|
18
18
|
if RUBY_VERSION < "1.9"
|
19
19
|
s.add_runtime_dependency 'json', '>= 1.6'
|
20
20
|
end
|
@@ -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 = ["
|
34
|
+
s.require_paths = ["lib"]
|
27
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.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sam Saffron
|
@@ -10,111 +10,221 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2014-06-25 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
|
+
- !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.md
|
79
191
|
files:
|
192
|
+
- CHANGELOG.md
|
193
|
+
- README.md
|
194
|
+
- lib/html/includes.css
|
195
|
+
- lib/html/includes.js
|
196
|
+
- lib/html/includes.less
|
197
|
+
- lib/html/includes.tmpl
|
198
|
+
- lib/html/jquery.1.7.1.js
|
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
|
208
|
+
- lib/mini_profiler/context.rb
|
209
|
+
- lib/mini_profiler/custom_timer_struct.rb
|
210
|
+
- lib/mini_profiler/gc_profiler.rb
|
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
|
217
|
+
- lib/mini_profiler/storage/file_store.rb
|
218
|
+
- lib/mini_profiler/storage/memcache_store.rb
|
219
|
+
- lib/mini_profiler/storage/memory_store.rb
|
220
|
+
- lib/mini_profiler/storage/redis_store.rb
|
221
|
+
- lib/mini_profiler/timer_struct.rb
|
222
|
+
- lib/mini_profiler/version.rb
|
223
|
+
- lib/mini_profiler_rails/railtie.rb
|
224
|
+
- lib/patches/net_patches.rb
|
225
|
+
- lib/patches/sql_patches.rb
|
226
|
+
- lib/rack-mini-profiler.rb
|
80
227
|
- rack-mini-profiler.gemspec
|
81
|
-
- Ruby/lib/mini_profiler_rails/railtie.rb
|
82
|
-
- Ruby/lib/html/list.css
|
83
|
-
- Ruby/lib/html/jquery.tmpl.js
|
84
|
-
- Ruby/lib/html/list.tmpl
|
85
|
-
- Ruby/lib/html/share.html
|
86
|
-
- Ruby/lib/html/includes.less
|
87
|
-
- Ruby/lib/html/profile_handler.js
|
88
|
-
- Ruby/lib/html/includes.tmpl
|
89
|
-
- Ruby/lib/html/includes.js
|
90
|
-
- Ruby/lib/html/list.js
|
91
|
-
- Ruby/lib/html/jquery.1.7.1.js
|
92
|
-
- Ruby/lib/html/flamegraph.html
|
93
|
-
- Ruby/lib/html/includes.css
|
94
|
-
- Ruby/lib/mini_profiler/context.rb
|
95
|
-
- Ruby/lib/mini_profiler/page_timer_struct.rb
|
96
|
-
- Ruby/lib/mini_profiler/storage/file_store.rb
|
97
|
-
- Ruby/lib/mini_profiler/storage/memcache_store.rb
|
98
|
-
- Ruby/lib/mini_profiler/storage/memory_store.rb
|
99
|
-
- Ruby/lib/mini_profiler/storage/abstract_store.rb
|
100
|
-
- Ruby/lib/mini_profiler/storage/redis_store.rb
|
101
|
-
- Ruby/lib/mini_profiler/client_settings.rb
|
102
|
-
- Ruby/lib/mini_profiler/profiling_methods.rb
|
103
|
-
- Ruby/lib/mini_profiler/gc_profiler.rb
|
104
|
-
- Ruby/lib/mini_profiler/client_timer_struct.rb
|
105
|
-
- Ruby/lib/mini_profiler/sql_timer_struct.rb
|
106
|
-
- Ruby/lib/mini_profiler/config.rb
|
107
|
-
- Ruby/lib/mini_profiler/custom_timer_struct.rb
|
108
|
-
- Ruby/lib/mini_profiler/version.rb
|
109
|
-
- Ruby/lib/mini_profiler/timer_struct.rb
|
110
|
-
- Ruby/lib/mini_profiler/profiler.rb
|
111
|
-
- Ruby/lib/mini_profiler/request_timer_struct.rb
|
112
|
-
- Ruby/lib/mini_profiler/flame_graph.rb
|
113
|
-
- Ruby/lib/patches/net_patches.rb
|
114
|
-
- Ruby/lib/patches/sql_patches.rb
|
115
|
-
- Ruby/lib/rack-mini-profiler.rb
|
116
|
-
- Ruby/README.md
|
117
|
-
- Ruby/CHANGELOG
|
118
228
|
homepage: http://miniprofiler.com
|
119
229
|
licenses:
|
120
230
|
- MIT
|
@@ -122,20 +232,20 @@ 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
|
+
- - ">="
|
129
239
|
- !ruby/object:Gem::Version
|
130
240
|
version: '0'
|
131
241
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
132
242
|
requirements:
|
133
|
-
- -
|
243
|
+
- - ">="
|
134
244
|
- !ruby/object:Gem::Version
|
135
245
|
version: '0'
|
136
246
|
requirements: []
|
137
247
|
rubyforge_project:
|
138
|
-
rubygems_version: 2.
|
248
|
+
rubygems_version: 2.2.2
|
139
249
|
signing_key:
|
140
250
|
specification_version: 4
|
141
251
|
summary: Profiles loading speed for rack applications.
|