faster_require 0.6.0 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
data/README CHANGED
@@ -2,7 +2,7 @@ A little utility to make
2
2
 
3
3
  require 'xxx'
4
4
 
5
- take much less time.
5
+ take much less time. As in much less. Well, on windows at least.
6
6
 
7
7
  Well, mostly on windows--on linux it's a speedup of only 0.41 to 0.45s, or so. [1]
8
8
 
@@ -35,7 +35,7 @@ rails app, running script/console "puts 333"
35
35
  with:
36
36
  6s
37
37
 
38
- rake -T
38
+ running "rake -T"
39
39
 
40
40
  1.9.1
41
41
  without: 3.75s
@@ -48,4 +48,32 @@ rake -T
48
48
  Note: in reality what we should do is fix core so that it doesn't have such awful I/O time in windows. There may be some gross inefficiency in there. For now, this is a work-around.
49
49
 
50
50
  [1] A sister project to this one, faster_gem_script, can make ruby scripts in linux run faster by 0.1s :) http://github.com/rdp/faster_gem_script
51
- (in windows it's a much higher gain). Eventually they'll be combined into one "gem optimizer" gem.
51
+ (in windows it's a much higher gain). Eventually they'll be combined into one "gem optimizer" gem.
52
+
53
+ == How to use in Rails ==
54
+
55
+ You can either install the gem, then add a
56
+
57
+ require 'rubygems'
58
+ require 'faster_require'
59
+
60
+
61
+ in your config/environment.rb, or (the best way is as follows):
62
+
63
+ Unpack it somewhere, like lib
64
+ $ cd my_rails_app/lib
65
+ $ gem unpack faster_require
66
+
67
+ Now add this line to your config/environment.rb:
68
+
69
+ require File.dirname(__FILE__) + "/../lib/faster_require-0.7.0/lib/faster_require" # faster speeds all around...
70
+
71
+ *before* this other (existing) line:
72
+
73
+ require File.join(File.dirname(__FILE__), 'boot')
74
+
75
+ Now it will speedup loading rubygems and everything. Happiness.
76
+
77
+ Any problems report back: https://github.com/rdp/faster_require
78
+
79
+ Enjoy.
data/Rakefile CHANGED
@@ -1,4 +1,10 @@
1
1
  require 'rubygems' if RUBY_VERSION < "1.9'"
2
+
3
+ begin
4
+ require 'psych' # sigh
5
+ rescue ::LoadError
6
+ end
7
+
2
8
  require 'jeweler'
3
9
  Jeweler::Tasks.new do |s|
4
10
  s.name = "faster_require"
@@ -8,6 +14,8 @@
8
14
  s.homepage = "http://github.com/rdp/faster_require"
9
15
  s.authors = ["Roger Pack"]
10
16
  s.add_development_dependency 'redparse'
17
+ s.add_development_dependency 'active_support', '= 2.3.10'
18
+ # s.add_development_dependency 'ruby-debug' too... or ruby-debug19 pick your poison
11
19
  s.add_development_dependency 'jeweler'
12
20
  s.add_development_dependency 'rspec', '>= 2'
13
21
  s.add_development_dependency 'sane'
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.6.0
1
+ 0.7.0
@@ -1,7 +1,9 @@
1
1
  require 'rbconfig'
2
+ #require 'rubygems'
3
+ #require 'ruby-debug'
2
4
 
3
5
  module FastRequire
4
- $FAST_REQUIRE_DEBUG ||= $DEBUG # can set it via $DEBUG, or by itself
6
+ $FAST_REQUIRE_DEBUG ||= $DEBUG # can set via $DEBUG, or on its own.
5
7
 
6
8
  def self.setup
7
9
  @@dir = File.expand_path('~/.ruby_faster_require_cache')
@@ -83,9 +85,9 @@ module FastRequire
83
85
  }
84
86
 
85
87
  @@already_loaded[File.expand_path(__FILE__)] = true # this file itself isn't in loaded features, yet, but very soon will be..
86
- # special case--I hope...
88
+ # a special case--I hope...
87
89
 
88
- # disallow re-requiring $0
90
+ # also disallow re- $0
89
91
  @@require_locs[$0] = File.expand_path($0) # so when we run into it on a require, we will skip it...
90
92
  @@already_loaded[File.expand_path($0)] = true
91
93
 
@@ -125,115 +127,162 @@ module FastRequire
125
127
  @@require_locs.clear
126
128
  setup
127
129
  end
128
- # require 'ruby-debug'
130
+
131
+ private
132
+ def last_caller
133
+ caller[-2]
134
+ end
135
+
136
+ IN_PROCESS = []
137
+ ALL_IN_PROCESS = []
138
+ @@count = 0
139
+ public
140
+
129
141
  def require_cached lib
130
142
  lib = lib.to_s # might not be zactly 1.9 compat... to_path ??
131
- # p 'doing require ' + lib
132
- if known_loc = @@require_locs[lib]
133
- if @@already_loaded[known_loc]
134
- p 'already loaded ' + known_loc if $FAST_REQUIRE_DEBUG
135
- return false
136
- end
137
- @@already_loaded[known_loc] = true
138
- if known_loc =~ /\.#{RbConfig::CONFIG['DLEXT']}$/
139
- puts 'doing original_non_cached_require on .so full path ' + known_loc if $FAST_REQUIRE_DEBUG
140
- original_non_cached_require known_loc # not much we can do there...too bad...well at least we pass it a full path though :P
141
- else
142
- unless $LOADED_FEATURES.include? known_loc
143
- if known_loc =~ /rubygems.rb$/
144
- puts 'requiring rubygems ' + known_loc if $FAST_REQUIRE_DEBUG
145
- original_non_cached_require(known_loc) # normal require so rubygems doesn't freak out when it finds itself already in $LOADED_FEATURES :P
146
- else
147
- if $FAST_REQUIRE_DEBUG
148
- puts 'doing cached loc eval on ' + lib + '=>' + known_loc
149
- end
150
- $LOADED_FEATURES << known_loc
151
- # fakely add the load path, too, so that autoload for the same file will work <sigh> [rspec2]
152
- no_suffix_full_path = known_loc.gsub(/\.[^.]+$/, '')
153
- no_suffix_lib = lib.gsub(/\.[^.]+$/, '')
154
- libs_path = no_suffix_full_path.gsub(no_suffix_lib, '')
155
- libs_path = File.expand_path(libs_path) # strip off trailing '/'
156
- $: << libs_path unless $:.index(libs_path)
157
- # load(known_loc, false) # too slow
158
- eval(File.open(known_loc, 'rb') {|f| f.read}, TOPLEVEL_BINDING, known_loc) # note the rb here--this means it's reading .rb files as binary, which *typically* works...maybe unnecessary?
159
- # --if it breaks re-save the offending file in binary mode, or file an issue on the tracker...
160
- return true
161
- end
162
- else
163
- puts 'ignoring already loaded? ' + known_loc if $FAST_REQUIRE_DEBUG
143
+ ALL_IN_PROCESS << [lib, @@count += 1]
144
+ begin
145
+ p 'doing require ' + lib + ' from ' + caller[-1] if $FAST_REQUIRE_DEBUG
146
+ if known_loc = @@require_locs[lib]
147
+ if @@already_loaded[known_loc]
148
+ p 'already loaded ' + known_loc + ' ' + lib if $FAST_REQUIRE_DEBUG
149
+ return false
164
150
  end
165
- end
166
- else
167
- # we don't know the location--let Ruby's original require do the heavy lifting for us here
168
- old = $LOADED_FEATURES.dup
169
- if(original_non_cached_require lib)
170
- # debugger might land here the first time you run a script and it doesn't have a require
171
- # cached yet...
172
- new = $LOADED_FEATURES - old
173
- found = new.last
174
-
175
- # incredibly, in 1.8.6, this doesn't always get set to a full path
176
- if RUBY_VERSION < '1.9'
177
- if !File.file?(found)
178
- # discover the full path.
179
- dir = $:.find{|path| File.file?(path + '/' + found)}
180
- return true unless dir # give up, case jruby socket.jar "mysterious"
181
- found = dir + '/' + found
151
+ @@already_loaded[known_loc] = true
152
+ if known_loc =~ /\.#{RbConfig::CONFIG['DLEXT']}$/
153
+ puts 'doing original_non_cached_require on .so full path ' + known_loc if $FAST_REQUIRE_DEBUG
154
+ original_non_cached_require known_loc # not much we can do there...too bad...well at least we pass it a full path though :P
155
+ else
156
+ unless $LOADED_FEATURES.include? known_loc
157
+ if known_loc =~ /rubygems.rb$/
158
+ puts 'requiring rubygems ' + lib if $FAST_REQUIRE_DEBUG
159
+ original_non_cached_require(lib) # revert to normal require so rubygems doesn't freak out when it finds itself already in $LOADED_FEATURES with rubygems > 1.6 :P
160
+ else
161
+ IN_PROCESS << known_loc
162
+ begin
163
+ if $FAST_REQUIRE_DEBUG
164
+ puts 'doing cached loc eval on ' + lib + '=>' + known_loc + " with stack:" + IN_PROCESS.join(' ')
165
+ end
166
+ $LOADED_FEATURES << known_loc
167
+ # fakely add the load path, too, so that autoload for the same file/path in gems will work <sigh> [rspec2]
168
+ no_suffix_full_path = known_loc.gsub(/\.[^.]+$/, '')
169
+ no_suffix_lib = lib.gsub(/\.[^.]+$/, '')
170
+ libs_path = no_suffix_full_path.gsub(no_suffix_lib, '')
171
+ libs_path = File.expand_path(libs_path) # strip off trailing '/'
172
+ $: << libs_path unless $:.index(libs_path)
173
+ # try some more autoload conivings...so that it won't attempt to autoload if it runs into it later...
174
+ relative_full_path = known_loc.sub(libs_path, '')[1..-1]
175
+ # $LOADED_FEATURES << relative_full_path.gsub('.rb', '') # don't think you need this one
176
+ $LOADED_FEATURES << relative_full_path # add in with .rb, too.
177
+
178
+ # load(known_loc, false) # too slow
179
+ eval(File.open(known_loc, 'rb') {|f| f.read}, TOPLEVEL_BINDING, known_loc) # note the 'rb' here--this means it's reading .rb files as binary, which *typically* works...maybe unnecessary though?
180
+ ensure
181
+ raise 'unexpected' unless IN_PROCESS.pop == known_loc
182
+ end
183
+ # --if it breaks re-save the offending file in binary mode, or file an issue on the tracker...
184
+ return true
185
+ end
186
+ else
187
+ puts 'ignoring already loaded [circular require?] ' + known_loc + ' ' + lib if $FAST_REQUIRE_DEBUG
182
188
  end
183
- found = File.expand_path(found);
184
189
  end
185
- puts 'found new loc:' + lib + '=>' + found if $FAST_REQUIRE_DEBUG
186
- @@require_locs[lib] = found
187
- @@already_loaded[found] = true
188
- return true
189
190
  else
190
- puts 'already loaded, apparently' + lib if $FAST_REQUIRE_DEBUG
191
- # this probably was something like
192
- # the first pass was require 'regdeferred'
193
- # now it's a different require 'regdeferred.rb'
194
- # which fails (or vice versa)
195
- # so figure out why
196
- # calc location, expand, map back
197
- where_found = FastRequire.guess_discover(lib, true)
198
- if where_found
199
- puts 'inferred lib loc:' + lib + '=>' + where_found if $FAST_REQUIRE_DEBUG
200
- @@require_locs[lib] = where_found
201
- # unfortunately if it's our first pass
202
- # and we are in the middle of a "real" require
203
- # that is circular
204
- # then $LOADED_FEATURES or (AFAIK) nothing will have been set
205
- # for us to be able to assert that
206
- # so...I think we'll end up
207
- # just fudging for a bit
208
- # raise 'not found' unless @@already_loaded[where_found] # should have already been set...I think...
191
+ # we don't know the location--let Ruby's original require do the heavy lifting for us here
192
+ old = $LOADED_FEATURES.dup
193
+ if(original_non_cached_require(lib))
194
+ # debugger might land here the first time you run a script and it doesn't have a require
195
+ # cached yet...
196
+ new = $LOADED_FEATURES - old
197
+ found = new.last
198
+
199
+ # incredibly, in 1.8.x, this doesn't always get set to a full path.
200
+ if RUBY_VERSION < '1.9'
201
+ if !File.file?(found)
202
+ # discover the full path.
203
+ dir = $:.find{|path| File.file?(path + '/' + found)}
204
+ return true unless dir # give up, case jruby socket.jar "mysterious"
205
+ found = dir + '/' + found
206
+ end
207
+ found = File.expand_path(found);
208
+ end
209
+ puts 'found new loc:' + lib + '=>' + found if $FAST_REQUIRE_DEBUG
210
+ @@require_locs[lib] = found
211
+ @@already_loaded[found] = true
212
+ return true
209
213
  else
210
- if $FAST_REQUIRE_DEBUG
211
- # happens for enumerator XXXX
212
- puts 'unable to infer' + lib + ' in ' if $FAST_REQUIRE_DEBUG
213
- @@already_loaded[found] = true # hacky
214
+
215
+ # this is expected if it's for libraries required before faster_require was [like rbconfig]
216
+ # raise 'actually expected' + lib if RUBY_VERSION >= '1.9.0'
217
+ puts 'already loaded, apparently [require returned false], trying to discover how it was redundant... ' + lib if $FAST_REQUIRE_DEBUG
218
+ # this probably was something like
219
+ # the first pass was require 'regdeferred'
220
+ # now it's a different require 'regdeferred.rb'
221
+ # which fails (or vice versa)
222
+ # so figure out why
223
+ # calc location, expand, map back
224
+ where_found = FastRequire.guess_discover(lib, true)
225
+ if where_found
226
+ puts 'inferred lib loc:' + lib + '=>' + where_found if $FAST_REQUIRE_DEBUG
227
+ @@require_locs[lib] = where_found
228
+ # unfortunately if it's our first pass
229
+ # and we are in the middle of a "real" require
230
+ # that is circular
231
+ # then $LOADED_FEATURES or (AFAIK) nothing will have been set
232
+ # for us to be able to assert that
233
+ # so...I think we'll end up
234
+ # just fudging for a bit
235
+ # raise 'not found' unless @@already_loaded[where_found] # should have already been set...I think...
236
+ else
237
+ if $FAST_REQUIRE_DEBUG
238
+ # happens for enumerator XXXX
239
+ puts 'unable to infer ' + lib + ' location' if $FAST_REQUIRE_DEBUG
240
+ @@already_loaded[found] = true # so hacky...
241
+ end
214
242
  end
243
+ return false # XXXX test all these return values
215
244
  end
216
- return false # XXXX test all these return values
217
245
  end
246
+ ensure
247
+ raise 'huh' unless ALL_IN_PROCESS.pop[0] == lib
218
248
  end
219
249
  end
220
250
 
221
- def self.resetup!
222
- eval "module ::Kernel; alias :require :require_cached; end"
223
- end
224
251
  end
225
252
 
226
253
  module Kernel
227
254
 
228
255
  if(defined?(@already_using_faster_require))
229
- raise 'twice not allowed...'
230
- # *shouldn't* ever get here...unless I'm wrong...
256
+ raise 'loading twice not allowed...we should never get here!'
257
+ end
258
+ @already_using_faster_require = true
259
+ # overwrite old require...
260
+ include FastRequire
261
+ if defined?(gem_original_require)
262
+ class << self
263
+ alias :original_remove_method :remove_method
264
+
265
+ def remove_method method # I think this actually might be needed <sigh>
266
+ if method.to_s == 'require'
267
+ #p 'not removing old require, since that\'s ours now'
268
+ else
269
+ original_remove_method method
270
+ end
271
+ end
272
+
273
+ end
274
+
275
+ # unused?
276
+ # def remove_method method
277
+ # p 'in mine2'
278
+ # end
279
+
280
+ # similarly overwrite this one...I guess...1.9.x...rubygems uses this as its default...I think...
281
+ alias :original_non_cached_require :gem_original_require
282
+ alias :gem_original_require :require_cached
231
283
  else
232
- @already_using_faster_require = true
233
- include FastRequire
234
- # overwrite old require...
235
284
  alias :original_non_cached_require :require
236
- FastRequire.resetup!
237
- end
285
+ alias :require :require_cached
286
+ end
238
287
 
239
- end
288
+ end
data/spec/eval_me1.rb ADDED
@@ -0,0 +1 @@
1
+ eval(File.read('eval_me2.rb'), binding, File.expand_path('./eval_me2.rb'))
data/spec/eval_me2.rb ADDED
@@ -0,0 +1 @@
1
+ require_relative 'eval_me1.rb'
@@ -0,0 +1,15 @@
1
+ $: << '.'
2
+ $: << 'files'
3
+ if true
4
+ require 'gem_after.rb'
5
+ else
6
+ p 'warning not using faster'
7
+ require 'rubygems'
8
+ end
9
+ require 'active_support'
10
+ raise 'poor acctive support' unless ActiveSupport::Inflector::Inflections.instance.plurals.length > 0
11
+ # d:/Ruby192/lib/ruby/gems/1.9.1/gems/diff-lcs-1.1.2/lib/diff/lcs/callbacks.rb:53: warning: already initialized constant SequenceCallbacks
12
+ require 'action_pack'
13
+ require 'action_pack'
14
+ # warning: already initialized constant JS_ESCAPE_MAP
15
+ p 'success'
@@ -1,4 +1,5 @@
1
1
  $: << '.'
2
+
2
3
  require '../lib/faster_require.rb'
3
4
  require 'rubygems'
4
5
  Gem::Specification
@@ -6,4 +7,5 @@ Gem::Specification
6
7
  raise if FastRequire.already_loaded.to_a.flatten.grep(/files\/b.rb/).length > 0
7
8
  require 'files/b.rb'
8
9
  raise if(require 'files/b.rb')
9
- raise unless FastRequire.already_loaded.to_a.flatten.grep(/files\/b.rb/).length > 0
10
+ raise 'lacking b.rb ' + FastRequire.already_loaded.to_a.join(' ') unless FastRequire.already_loaded.to_a.flatten.grep(/files\/b.rb/).length > 0
11
+ p 'success'
@@ -0,0 +1,12 @@
1
+ $: << '.'
2
+ $: << 'files'
3
+ if true
4
+ require 'gem_after.rb'
5
+ else
6
+ p 'warning not using faster require'
7
+ require 'rubygems'
8
+ end
9
+ require 'ruby-debug'
10
+ require 'rspec'
11
+ # d:/Ruby192/lib/ruby/gems/1.9.1/gems/diff-lcs-1.1.2/lib/diff/lcs/callbacks.rb:53: warning: already initialized constant SequenceCallbacks
12
+ p 'success'
@@ -0,0 +1,7 @@
1
+ $: << '.'
2
+ $: << 'files'
3
+ require 'gem_before.rb'
4
+ require 'rspec'
5
+ require 'ruby-debug'
6
+ # d:/Ruby192/lib/ruby/gems/1.9.1/gems/diff-lcs-1.1.2/lib/diff/lcs/callbacks.rb:53: warning: already initialized constant SequenceCallbacks
7
+ p 'success'
@@ -0,0 +1,8 @@
1
+ $: << '.'
2
+
3
+ require '../lib/faster_require.rb'
4
+ raise if FastRequire.already_loaded.to_a.flatten.grep(/files\/b.rb/).length > 0
5
+ require 'socket'
6
+ TCPSocket
7
+ raise 'lacking socket ' + FastRequire.already_loaded.to_a.join(' ') unless FastRequire.already_loaded.to_a.flatten.grep(/socket/).length > 0
8
+ p 'success'
@@ -20,13 +20,11 @@ unless RUBY_PLATFORM =~ /java/
20
20
  FastRequire.load cached if File.exist? cached
21
21
  FastRequire.save cached
22
22
  else
23
-
24
- require 'spec/autorun'
25
- require_relative '../lib/faster_require'
26
-
23
+ require 'spec/autorun'
24
+ require_relative '../lib/faster_require'
27
25
  end
28
26
 
29
- describe "requires faster" do
27
+ describe "requires faster!" do
30
28
 
31
29
  before do
32
30
  FastRequire.clear_all!
@@ -134,18 +132,25 @@ describe "requires faster" do
134
132
  ruby "files/gem_before.rb"
135
133
  end
136
134
 
137
- it "should not double load gems" do
138
- a = `#{@ruby} files/gem_after.rb 2>&1`
139
- a.should_not match('already initialized')
140
- end
141
-
142
- it "should throw if you require it twice" do
135
+ ['gem_after.rb', 'load_various_gems.rb', 'load_various_gems2.rb', 'active_support_no_double_load.rb', 'fast.rb'].each{|filename|
136
+ it "should not double load gems #{filename}" do
137
+ 3.times {
138
+ a = `#{@ruby} -v files/#{filename} 2>&1`
139
+ a.should_not match('already initialized')
140
+ a.should_not match('from ') # an error backtrace...
141
+ a.should_not match('discarding old deep_const_get')
142
+ a.length.should be > 0
143
+ }
144
+ end
145
+ }
146
+
147
+ it "should throw if you require itself twice" do
143
148
  Dir.chdir('files') do
144
149
  assert !system(@ruby + 'attempt_double_load.rb')
145
150
  end
146
151
  end
147
152
 
148
- it "should force require 'abc' to not load file called exactly abc" do
153
+ it "require 'abc' should not attempt to load file called exactly abc" do
149
154
  Dir.chdir('files') do
150
155
  ruby 'require_non_dot_rb_fails.rb'
151
156
  end
@@ -174,12 +179,15 @@ describe "requires faster" do
174
179
  end
175
180
  end
176
181
 
177
- it "should" do
182
+ it "should do this type loading too" do
178
183
  Dir.chdir('files') do
179
184
  ruby 'fast2.rb'
180
185
  end
181
186
  end
182
-
187
+
188
+ it "should be able to infer .so files like socket.so" #do
189
+ # ruby "files/socket_load.rb" # LODO reproduce failure
190
+ # end
183
191
 
184
192
 
185
193
  end
metadata CHANGED
@@ -1,102 +1,92 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: faster_require
3
- version: !ruby/object:Gem::Version
4
- hash: 7
5
- prerelease: false
6
- segments:
7
- - 0
8
- - 6
9
- - 0
10
- version: 0.6.0
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.7.0
5
+ prerelease:
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Roger Pack
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2011-02-25 00:00:00 -07:00
12
+ date: 2011-03-09 00:00:00.000000000 -07:00
19
13
  default_executable: faster_require
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
22
16
  name: redparse
17
+ requirement: &18274344 !ruby/object:Gem::Requirement
18
+ none: false
19
+ requirements:
20
+ - - ! '>='
21
+ - !ruby/object:Gem::Version
22
+ version: '0'
23
+ type: :development
23
24
  prerelease: false
24
- requirement: &id001 !ruby/object:Gem::Requirement
25
+ version_requirements: *18274344
26
+ - !ruby/object:Gem::Dependency
27
+ name: active_support
28
+ requirement: &18273984 !ruby/object:Gem::Requirement
25
29
  none: false
26
- requirements:
27
- - - ">="
28
- - !ruby/object:Gem::Version
29
- hash: 3
30
- segments:
31
- - 0
32
- version: "0"
30
+ requirements:
31
+ - - =
32
+ - !ruby/object:Gem::Version
33
+ version: 2.3.10
33
34
  type: :development
34
- version_requirements: *id001
35
- - !ruby/object:Gem::Dependency
36
- name: jeweler
37
35
  prerelease: false
38
- requirement: &id002 !ruby/object:Gem::Requirement
36
+ version_requirements: *18273984
37
+ - !ruby/object:Gem::Dependency
38
+ name: jeweler
39
+ requirement: &18273696 !ruby/object:Gem::Requirement
39
40
  none: false
40
- requirements:
41
- - - ">="
42
- - !ruby/object:Gem::Version
43
- hash: 3
44
- segments:
45
- - 0
46
- version: "0"
41
+ requirements:
42
+ - - ! '>='
43
+ - !ruby/object:Gem::Version
44
+ version: '0'
47
45
  type: :development
48
- version_requirements: *id002
49
- - !ruby/object:Gem::Dependency
50
- name: rspec
51
46
  prerelease: false
52
- requirement: &id003 !ruby/object:Gem::Requirement
47
+ version_requirements: *18273696
48
+ - !ruby/object:Gem::Dependency
49
+ name: rspec
50
+ requirement: &18273336 !ruby/object:Gem::Requirement
53
51
  none: false
54
- requirements:
55
- - - ">="
56
- - !ruby/object:Gem::Version
57
- hash: 7
58
- segments:
59
- - 2
60
- version: "2"
52
+ requirements:
53
+ - - ! '>='
54
+ - !ruby/object:Gem::Version
55
+ version: '2'
61
56
  type: :development
62
- version_requirements: *id003
63
- - !ruby/object:Gem::Dependency
64
- name: sane
65
57
  prerelease: false
66
- requirement: &id004 !ruby/object:Gem::Requirement
58
+ version_requirements: *18273336
59
+ - !ruby/object:Gem::Dependency
60
+ name: sane
61
+ requirement: &18272976 !ruby/object:Gem::Requirement
67
62
  none: false
68
- requirements:
69
- - - ">="
70
- - !ruby/object:Gem::Version
71
- hash: 3
72
- segments:
73
- - 0
74
- version: "0"
63
+ requirements:
64
+ - - ! '>='
65
+ - !ruby/object:Gem::Version
66
+ version: '0'
75
67
  type: :development
76
- version_requirements: *id004
77
- - !ruby/object:Gem::Dependency
78
- name: ruby-prof
79
68
  prerelease: false
80
- requirement: &id005 !ruby/object:Gem::Requirement
69
+ version_requirements: *18272976
70
+ - !ruby/object:Gem::Dependency
71
+ name: ruby-prof
72
+ requirement: &18272652 !ruby/object:Gem::Requirement
81
73
  none: false
82
- requirements:
83
- - - ">="
84
- - !ruby/object:Gem::Version
85
- hash: 3
86
- segments:
87
- - 0
88
- version: "0"
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
89
78
  type: :development
90
- version_requirements: *id005
91
- description: A tool designed to speedup library loading in Ruby by caching library locations
79
+ prerelease: false
80
+ version_requirements: *18272652
81
+ description: A tool designed to speedup library loading in Ruby by caching library
82
+ locations
92
83
  email: rogerdpack@gmail.com
93
- executables:
84
+ executables:
94
85
  - faster_require
95
86
  extensions: []
96
-
97
- extra_rdoc_files:
87
+ extra_rdoc_files:
98
88
  - README
99
- files:
89
+ files:
100
90
  - README
101
91
  - Rakefile
102
92
  - VERSION
@@ -117,6 +107,8 @@ files:
117
107
  - spec/files/gem_after.rb
118
108
  - spec/files/gem_before.rb
119
109
  - spec/files/large.rb
110
+ - spec/files/load_various_gems.rb
111
+ - spec/files/load_various_gems2.rb
120
112
  - spec/files/non_dot_rb.rb
121
113
  - spec/files/require_full_path.rb
122
114
  - spec/files/require_non_dot_rb_fails.rb
@@ -125,46 +117,44 @@ files:
125
117
  - spec/files/should_put_modules_in_right_place.rb
126
118
  - spec/files/slow.rb
127
119
  - spec/spec.fast_require.rb
120
+ - spec/eval_me1.rb
121
+ - spec/eval_me2.rb
128
122
  - spec/files/a.rb
123
+ - spec/files/active_support_no_double_load.rb
124
+ - spec/files/socket_load.rb
129
125
  - spec/temp/slow.rb
130
126
  - spec/temp/yo.rb
131
127
  has_rdoc: true
132
128
  homepage: http://github.com/rdp/faster_require
133
129
  licenses: []
134
-
135
130
  post_install_message:
136
131
  rdoc_options: []
137
-
138
- require_paths:
132
+ require_paths:
139
133
  - lib
140
- required_ruby_version: !ruby/object:Gem::Requirement
134
+ required_ruby_version: !ruby/object:Gem::Requirement
141
135
  none: false
142
- requirements:
143
- - - ">="
144
- - !ruby/object:Gem::Version
145
- hash: 3
146
- segments:
147
- - 0
148
- version: "0"
149
- required_rubygems_version: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - ! '>='
138
+ - !ruby/object:Gem::Version
139
+ version: '0'
140
+ required_rubygems_version: !ruby/object:Gem::Requirement
150
141
  none: false
151
- requirements:
152
- - - ">="
153
- - !ruby/object:Gem::Version
154
- hash: 3
155
- segments:
156
- - 0
157
- version: "0"
142
+ requirements:
143
+ - - ! '>='
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
158
146
  requirements: []
159
-
160
147
  rubyforge_project:
161
- rubygems_version: 1.3.7
148
+ rubygems_version: 1.6.0
162
149
  signing_key:
163
150
  specification_version: 3
164
151
  summary: Speed library loading in Ruby
165
- test_files:
152
+ test_files:
153
+ - spec/eval_me1.rb
154
+ - spec/eval_me2.rb
166
155
  - spec/files/a.rb
167
156
  - spec/files/a_requires_b.rb
157
+ - spec/files/active_support_no_double_load.rb
168
158
  - spec/files/attempt_double_load.rb
169
159
  - spec/files/b.rb
170
160
  - spec/files/c.rb
@@ -175,6 +165,8 @@ test_files:
175
165
  - spec/files/gem_after.rb
176
166
  - spec/files/gem_before.rb
177
167
  - spec/files/large.rb
168
+ - spec/files/load_various_gems.rb
169
+ - spec/files/load_various_gems2.rb
178
170
  - spec/files/non_dot_rb.rb
179
171
  - spec/files/require_full_path.rb
180
172
  - spec/files/require_non_dot_rb_fails.rb
@@ -182,6 +174,7 @@ test_files:
182
174
  - spec/files/requires_itself.rb
183
175
  - spec/files/should_put_modules_in_right_place.rb
184
176
  - spec/files/slow.rb
177
+ - spec/files/socket_load.rb
185
178
  - spec/spec.fast_require.rb
186
179
  - spec/temp/slow.rb
187
180
  - spec/temp/yo.rb