faster_require 0.7.3 → 0.7.4

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.
data/ChangeLog CHANGED
@@ -1,3 +1,7 @@
1
+ 0.7.4: allow double loading, for rails apps and gems to load it.
2
+
3
+ 0.7.3: work with 1.9 require_relative
4
+
1
5
  0.7.1: Accomodate for non HOME environment variable [what the..]
2
6
 
3
7
  0.7.0: now it works with autoload finally [and thus hopefully rails]
data/Rakefile CHANGED
@@ -20,6 +20,7 @@ end
20
20
  s.add_development_dependency 'jeweler'
21
21
  s.add_development_dependency 'rspec', '>= 2'
22
22
  s.add_development_dependency 'sane'
23
+ s.add_development_dependency 'facets'
23
24
  s.add_development_dependency 'ruby-prof'
24
25
  # s.add_dependency
25
26
  end
data/TODO CHANGED
@@ -2,4 +2,5 @@ advertise if quiet for a week after 3/10/11
2
2
  stringio
3
3
  if ruby < 1.9 for autoload stuff
4
4
  benchmarks jruby et al
5
- running rails seems to still have some redundancies in there [?]
5
+ running rails seems to still have some redundancies in there [?]
6
+ "does it slow us down"
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.7.3
1
+ 0.7.4
@@ -1,8 +1,18 @@
1
- require 'rbconfig'
1
+
2
+ if(defined?($already_using_faster_require))
3
+ p 'warning: faster_require double load expected?' if $FAST_REQUIRE_DEBUG
4
+ local_version = File.read(File.dirname(__FILE__) + "/../VERSION")
5
+ raise 'mismatched faster_require version' unless local_version == FastRequire::VERSION
6
+ else
7
+ $already_using_faster_require = true
8
+
9
+ # now load it...
10
+
11
+ require 'rbconfig' # maybe could cache this one, too?
2
12
 
3
13
  module FastRequire
4
14
  $FAST_REQUIRE_DEBUG ||= $DEBUG # can set via $DEBUG, or on its own.
5
-
15
+ VERSION = File.read(File.dirname(__FILE__) + "/../VERSION")
6
16
  def self.setup
7
17
  begin
8
18
  @@dir = File.expand_path('~/.ruby_faster_require_cache')
@@ -177,11 +187,12 @@ module FastRequire
177
187
  no_suffix_lib = lib.gsub(/\.[^.]+$/, '')
178
188
  libs_path = no_suffix_full_path.gsub(no_suffix_lib, '')
179
189
  libs_path = File.expand_path(libs_path) # strip off trailing '/'
180
- $: << libs_path unless $:.index(libs_path)
190
+ $: << libs_path unless $:.index(libs_path) # might not need this anymore, but it feels more sane...does it slow us down, though?
191
+
181
192
  # try some more autoload conivings...so that it won't attempt to autoload if it runs into it later...
182
193
  relative_full_path = known_loc.sub(libs_path, '')[1..-1]
194
+ $LOADED_FEATURES << relative_full_path unless $LOADED_FEATURES.index(relative_full_path) # add in with .rb, too, for autoload
183
195
  # $LOADED_FEATURES << relative_full_path.gsub('.rb', '') # don't think you need this one
184
- $LOADED_FEATURES << relative_full_path # add in with .rb, too.
185
196
 
186
197
  # load(known_loc, false) # too slow
187
198
  contents = File.open(known_loc, 'rb') {|f| f.read}
@@ -203,6 +214,7 @@ module FastRequire
203
214
  else
204
215
  # we don't know the location--let Ruby's original require do the heavy lifting for us here
205
216
  old = $LOADED_FEATURES.dup
217
+ p 'doing old non-known location require ' + lib if $FAST_REQUIRE_DEBUG
206
218
  if(original_non_cached_require(lib))
207
219
  # debugger might land here the first time you run a script and it doesn't have a require
208
220
  # cached yet...
@@ -265,10 +277,6 @@ end
265
277
 
266
278
  module Kernel
267
279
 
268
- if(defined?(@already_using_faster_require))
269
- raise 'loading twice not allowed...we should never get here!'
270
- end
271
- @already_using_faster_require = true
272
280
  # overwrite old require...
273
281
  include FastRequire
274
282
  if defined?(gem_original_require)
@@ -298,3 +306,6 @@ module Kernel
298
306
  alias :require :require_cached
299
307
  end
300
308
  end
309
+
310
+
311
+ end
@@ -1,4 +1,6 @@
1
1
  $FAST_REQUIRE_DEBUG = 1
2
2
  a = File.dirname(File.expand_path(__FILE__)) + '/../../lib/faster_require.rb'
3
+ p 'first pass'
3
4
  load a
5
+ p 'second pass'
4
6
  load a
@@ -0,0 +1,5 @@
1
+ $FAST_REQUIRE_DEBUG = 1
2
+ a = File.dirname(File.expand_path(__FILE__)) + '/../../lib/faster_require.rb'
3
+ load a
4
+ FastRequire::VERSION='fake'
5
+ load a
@@ -0,0 +1,3 @@
1
+ require '../lib/faster_require.rb'
2
+ require 'rubygems'
3
+ require 'facets'
@@ -4,5 +4,8 @@ require '../lib/faster_require.rb'
4
4
  raise if FastRequire.already_loaded.to_a.flatten.grep(/files\/b.rb/).length > 0
5
5
  require 'socket'
6
6
  TCPSocket
7
+ require 'stringio'
8
+ StringIO
7
9
  raise 'lacking socket ' + FastRequire.already_loaded.to_a.join(' ') unless FastRequire.already_loaded.to_a.flatten.grep(/socket/).length > 0
10
+ raise 'lacking stringio ' + FastRequire.already_loaded.to_a.join(' ') unless FastRequire.already_loaded.to_a.flatten.grep(/stringio/).length > 0
8
11
  p 'success'
@@ -0,0 +1,2 @@
1
+ require 'rubygems'
2
+ Gem::Dependency
@@ -1,12 +1,11 @@
1
- # can set this: $FAST_REQUIRE_DEBUG
2
-
3
- if RUBY_VERSION < '1.9'
4
- require 'rubygems' # faster_rubygems, perhaps?
5
- end
1
+ # could also set this here if desired: $FAST_REQUIRE_DEBUG = true
6
2
 
3
+ require 'rubygems' # faster_rubygems, perhaps?
7
4
  require 'sane'
8
5
  require 'benchmark'
9
6
 
7
+ raise 'double faster_require' if defined?($already_using_faster_require) # disallowed, since who knows what version the gem one is...
8
+
10
9
  unless RUBY_PLATFORM =~ /java/
11
10
  require_relative '../lib/faster_require'
12
11
  cached = '.cached_spec_locs' + RUBY_VERSION
@@ -68,11 +67,15 @@ describe "requires faster!" do
68
67
  end
69
68
  end
70
69
 
70
+ it "should load rubygems for speed look" do
71
+ slow = Benchmark.realtime { assert system("#{OS.ruby_bin} files/time_just_loading_rubygems.rb")}
72
+ fast = Benchmark.realtime { assert system("#{OS.ruby_bin} files/time_just_loading_rubygems.rb")}
73
+ pps 'just loading rubygems [obviously depends on number of gems installed] at all: fast', fast, 'slow', slow
74
+ end
75
+
71
76
  it "should work with large complex gem" do
72
77
  Dir.chdir('files') do
73
- assert(system("#{OS.ruby_bin} large.rb"))
74
- assert(system("#{OS.ruby_bin} large.rb"))
75
- assert(system("#{OS.ruby_bin} large.rb"))
78
+ 3.times { assert(system("#{OS.ruby_bin} large.rb")) }
76
79
  end
77
80
  end
78
81
 
@@ -82,7 +85,7 @@ describe "requires faster!" do
82
85
 
83
86
  it "should load .so files still, and only load them once" do
84
87
  # ruby-prof gem
85
- 2.times { require 'ruby_prof.so'; RubyProf }
88
+ 3.times { require 'ruby_prof.so'; RubyProf }
86
89
  assert $LOADED_FEATURES.length == (@old_length + 1)
87
90
  end
88
91
 
@@ -106,17 +109,13 @@ describe "requires faster!" do
106
109
  assert system("ruby -I../../lib e.rb")
107
110
  assert system("ruby -C.. -I../lib files/e.rb")
108
111
  end
109
- # require 'ruby-debug'
110
- # debugger
111
112
  assert Dir[FastRequire.dir + '/*'].length == 3
112
113
  assert Dir[FastRequire.dir + '/*d.rb*'].length == 1 # use full path
113
114
  assert Dir[FastRequire.dir + '/*e.rb*'].length == 2 # different Dir.pwd's
114
115
  end
115
116
 
116
- context "should work with ascii files well" do # most are binary, so...low prio
117
- it "could cache the converted file, if that speeds things up"
118
- end
119
-
117
+ it "should work with encoded files too" # most are binary, so...low prio
118
+
120
119
  private
121
120
 
122
121
  def ruby filename
@@ -132,7 +131,7 @@ describe "requires faster!" do
132
131
  ruby "files/gem_before.rb"
133
132
  end
134
133
 
135
- ['gem_after.rb', 'load_various_gems.rb', 'load_various_gems2.rb', 'active_support_no_double_load.rb', 'fast.rb'].each{|filename|
134
+ ['require_facets.rb', 'gem_after.rb', 'load_various_gems.rb', 'load_various_gems2.rb', 'active_support_no_double_load.rb', 'fast.rb'].each{|filename|
136
135
  it "should not double load gems #{filename}" do
137
136
  3.times {
138
137
  a = `#{@ruby} -v files/#{filename} 2>&1`
@@ -144,9 +143,10 @@ describe "requires faster!" do
144
143
  end
145
144
  }
146
145
 
147
- it "should throw if you require itself twice" do
146
+ it "should be ok if you require itself twice" do
148
147
  Dir.chdir('files') do
149
- assert !system(@ruby + 'attempt_double_load.rb')
148
+ 3.times { assert system(@ruby + 'attempt_double_load.rb') }
149
+ assert `#{@ruby + 'attempt_double_load.rb'}` =~ /double load expected/
150
150
  end
151
151
  end
152
152
 
data/todo CHANGED
@@ -2,4 +2,5 @@ advertise if quiet for a week after 3/10/11
2
2
  stringio
3
3
  if ruby < 1.9 for autoload stuff
4
4
  benchmarks jruby et al
5
- running rails seems to still have some redundancies in there [?]
5
+ running rails seems to still have some redundancies in there [?]
6
+ "does it slow us down"
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: faster_require
3
3
  version: !ruby/object:Gem::Version
4
- hash: 5
4
+ hash: 11
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 7
9
- - 3
10
- version: 0.7.3
9
+ - 4
10
+ version: 0.7.4
11
11
  platform: ruby
12
12
  authors:
13
13
  - Roger Pack
@@ -107,7 +107,7 @@ dependencies:
107
107
  type: :development
108
108
  version_requirements: *id006
109
109
  - !ruby/object:Gem::Dependency
110
- name: ruby-prof
110
+ name: facets
111
111
  prerelease: false
112
112
  requirement: &id007 !ruby/object:Gem::Requirement
113
113
  none: false
@@ -120,6 +120,20 @@ dependencies:
120
120
  version: "0"
121
121
  type: :development
122
122
  version_requirements: *id007
123
+ - !ruby/object:Gem::Dependency
124
+ name: ruby-prof
125
+ prerelease: false
126
+ requirement: &id008 !ruby/object:Gem::Requirement
127
+ none: false
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ hash: 3
132
+ segments:
133
+ - 0
134
+ version: "0"
135
+ type: :development
136
+ version_requirements: *id008
123
137
  description: A tool designed to speedup library loading in Ruby by caching library locations
124
138
  email: rogerdpack@gmail.com
125
139
  executables:
@@ -141,7 +155,9 @@ files:
141
155
  - lib/faster_require.rb
142
156
  - lib/rubygems_plugin.rb
143
157
  - spec/files/a_requires_b.rb
158
+ - spec/files/active_support_no_double_load.rb
144
159
  - spec/files/attempt_double_load.rb
160
+ - spec/files/attempt_double_load_wrong_version.rb
145
161
  - spec/files/b.rb
146
162
  - spec/files/c.rb
147
163
  - spec/files/clear.bat
@@ -155,20 +171,21 @@ files:
155
171
  - spec/files/load_various_gems.rb
156
172
  - spec/files/load_various_gems2.rb
157
173
  - spec/files/non_dot_rb.rb
174
+ - spec/files/require_facets.rb
158
175
  - spec/files/require_full_path.rb
159
176
  - spec/files/require_non_dot_rb_fails.rb
160
177
  - spec/files/require_twice_in_dir_pwd.rb
161
178
  - spec/files/requires_itself.rb
162
179
  - spec/files/should_put_modules_in_right_place.rb
163
180
  - spec/files/slow.rb
181
+ - spec/files/socket_load.rb
182
+ - spec/files/time_just_loading_rubygems.rb
164
183
  - spec/spec.fast_require.rb
165
184
  - todo
166
185
  - TODO
167
186
  - spec/eval_me1.rb
168
187
  - spec/eval_me2.rb
169
188
  - spec/files/a.rb
170
- - spec/files/active_support_no_double_load.rb
171
- - spec/files/socket_load.rb
172
189
  - spec/temp/slow.rb
173
190
  - spec/temp/yo.rb
174
191
  has_rdoc: true
@@ -211,6 +228,7 @@ test_files:
211
228
  - spec/files/a.rb
212
229
  - spec/files/active_support_no_double_load.rb
213
230
  - spec/files/attempt_double_load.rb
231
+ - spec/files/attempt_double_load_wrong_version.rb
214
232
  - spec/files/a_requires_b.rb
215
233
  - spec/files/b.rb
216
234
  - spec/files/c.rb
@@ -225,12 +243,14 @@ test_files:
225
243
  - spec/files/load_various_gems2.rb
226
244
  - spec/files/non_dot_rb.rb
227
245
  - spec/files/requires_itself.rb
246
+ - spec/files/require_facets.rb
228
247
  - spec/files/require_full_path.rb
229
248
  - spec/files/require_non_dot_rb_fails.rb
230
249
  - spec/files/require_twice_in_dir_pwd.rb
231
250
  - spec/files/should_put_modules_in_right_place.rb
232
251
  - spec/files/slow.rb
233
252
  - spec/files/socket_load.rb
253
+ - spec/files/time_just_loading_rubygems.rb
234
254
  - spec/spec.fast_require.rb
235
255
  - spec/temp/slow.rb
236
256
  - spec/temp/yo.rb