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.

Files changed (43) hide show
  1. checksums.yaml +4 -4
  2. data/{Ruby/CHANGELOG → CHANGELOG} +27 -0
  3. data/{Ruby/README.md → README.md} +73 -31
  4. data/{Ruby/lib → lib}/html/includes.css +0 -0
  5. data/{Ruby/lib → lib}/html/includes.js +9 -8
  6. data/{Ruby/lib → lib}/html/includes.less +0 -0
  7. data/{Ruby/lib → lib}/html/includes.tmpl +3 -1
  8. data/{Ruby/lib → lib}/html/jquery.1.7.1.js +0 -0
  9. data/{Ruby/lib → lib}/html/jquery.tmpl.js +0 -0
  10. data/{Ruby/lib → lib}/html/list.css +2 -2
  11. data/{Ruby/lib → lib}/html/list.js +1 -1
  12. data/{Ruby/lib → lib}/html/list.tmpl +2 -2
  13. data/lib/html/profile_handler.js +1 -0
  14. data/{Ruby/lib → lib}/html/share.html +2 -2
  15. data/{Ruby/lib → lib}/mini_profiler/client_settings.rb +11 -11
  16. data/{Ruby/lib → lib}/mini_profiler/client_timer_struct.rb +0 -0
  17. data/{Ruby/lib → lib}/mini_profiler/config.rb +11 -4
  18. data/{Ruby/lib → lib}/mini_profiler/context.rb +1 -1
  19. data/{Ruby/lib → lib}/mini_profiler/custom_timer_struct.rb +0 -0
  20. data/lib/mini_profiler/gc_profiler.rb +181 -0
  21. data/{Ruby/lib → lib}/mini_profiler/page_timer_struct.rb +4 -4
  22. data/{Ruby/lib → lib}/mini_profiler/profiler.rb +165 -142
  23. data/{Ruby/lib → lib}/mini_profiler/profiling_methods.rb +31 -11
  24. data/{Ruby/lib → lib}/mini_profiler/request_timer_struct.rb +5 -5
  25. data/{Ruby/lib → lib}/mini_profiler/sql_timer_struct.rb +0 -0
  26. data/{Ruby/lib → lib}/mini_profiler/storage/abstract_store.rb +0 -0
  27. data/{Ruby/lib → lib}/mini_profiler/storage/file_store.rb +26 -4
  28. data/{Ruby/lib → lib}/mini_profiler/storage/memcache_store.rb +0 -0
  29. data/{Ruby/lib → lib}/mini_profiler/storage/memory_store.rb +25 -4
  30. data/{Ruby/lib → lib}/mini_profiler/storage/redis_store.rb +0 -0
  31. data/{Ruby/lib → lib}/mini_profiler/timer_struct.rb +0 -0
  32. data/lib/mini_profiler/version.rb +5 -0
  33. data/{Ruby/lib → lib}/mini_profiler_rails/railtie.rb +6 -2
  34. data/{Ruby/lib → lib}/patches/net_patches.rb +0 -0
  35. data/{Ruby/lib → lib}/patches/sql_patches.rb +3 -2
  36. data/{Ruby/lib → lib}/rack-mini-profiler.rb +0 -0
  37. data/rack-mini-profiler.gemspec +14 -6
  38. metadata +153 -43
  39. data/Ruby/lib/html/flamegraph.html +0 -351
  40. data/Ruby/lib/html/profile_handler.js +0 -1
  41. data/Ruby/lib/mini_profiler/flame_graph.rb +0 -54
  42. data/Ruby/lib/mini_profiler/gc_profiler.rb +0 -107
  43. 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 profile_method(klass, method, &blk)
59
- default_name = klass.to_s + " " + method.to_s
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
- Rack::MiniProfiler.current.current_timer = current_timer = parent_timer.add_child(name)
89
- begin
90
- result = self.send without_profiling, *args, &orig
91
- ensure
92
- current_timer.record_time
93
- Rack::MiniProfiler.current.current_timer = parent_timer
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
@@ -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
- Thread.new do
47
+ t = CacheCleanupThread.new do
48
+ interval = 10
49
+ cleanup_cache_cycle = 3600
50
+ cycle_count = 1
51
+
44
52
  begin
45
- while true do
53
+ until Thread.current[:should_exit] do
46
54
  # TODO: a sane retry count before bailing
47
- me.cleanup_cache
48
- sleep(3600)
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)
@@ -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
- Thread.new do
18
- while true do
19
- me.cleanup_cache
20
- sleep(3600)
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)
@@ -0,0 +1,5 @@
1
+ module Rack
2
+ class MiniProfiler
3
+ VERSION = '898a13ca6797c6bc1fee313e17d388b0'.freeze
4
+ end
5
+ end
@@ -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 = lambda { |env|
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 << "/assets/"
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
- ::Rack::MiniProfiler.record_sql(message, duration)
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
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "rack-mini-profiler"
3
- s.version = "0.1.28"
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('Ruby/lib/**/*').reject {|f| File.directory?(f) || f =~ /~$/ } )
12
+ ].concat( Dir.glob('lib/**/*').reject {|f| File.directory?(f) || f =~ /~$/ } )
13
13
  s.extra_rdoc_files = [
14
- "Ruby/README.md",
15
- "Ruby/CHANGELOG"
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 = ["Ruby/lib"]
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.1.28
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: 2013-07-30 00:00:00.000000000 Z
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
- - Ruby/README.md
78
- - Ruby/CHANGELOG
189
+ - README.md
190
+ - CHANGELOG
79
191
  files:
80
192
  - 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
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
- - Ruby/lib
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.3
248
+ rubygems_version: 2.0.14
139
249
  signing_key:
140
250
  specification_version: 4
141
251
  summary: Profiles loading speed for rack applications.