rubygems-update 1.3.6 → 1.3.7

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 rubygems-update might be problematic. Click here for more details.

Files changed (80) hide show
  1. data.tar.gz.sig +0 -0
  2. data/ChangeLog +86 -0
  3. data/History.txt +34 -1
  4. data/Manifest.txt +6 -1
  5. data/Rakefile +79 -34
  6. data/lib/rubygems.rb +52 -30
  7. data/lib/rubygems/builder.rb +2 -0
  8. data/lib/rubygems/command.rb +12 -0
  9. data/lib/rubygems/command_manager.rb +17 -12
  10. data/lib/rubygems/commands/contents_command.rb +1 -1
  11. data/lib/rubygems/commands/dependency_command.rb +3 -1
  12. data/lib/rubygems/commands/environment_command.rb +3 -2
  13. data/lib/rubygems/commands/fetch_command.rb +7 -3
  14. data/lib/rubygems/commands/install_command.rb +2 -1
  15. data/lib/rubygems/commands/query_command.rb +16 -3
  16. data/lib/rubygems/commands/server_command.rb +5 -3
  17. data/lib/rubygems/commands/setup_command.rb +1 -1
  18. data/lib/rubygems/commands/unpack_command.rb +35 -23
  19. data/lib/rubygems/commands/update_command.rb +1 -1
  20. data/lib/rubygems/defaults.rb +4 -6
  21. data/lib/rubygems/dependency.rb +32 -6
  22. data/lib/rubygems/dependency_installer.rb +10 -3
  23. data/lib/rubygems/doc_manager.rb +5 -2
  24. data/lib/rubygems/errors.rb +35 -0
  25. data/lib/rubygems/exceptions.rb +10 -1
  26. data/lib/rubygems/indexer.rb +1 -1
  27. data/lib/rubygems/installer.rb +6 -5
  28. data/lib/rubygems/package.rb +6 -3
  29. data/lib/rubygems/package/f_sync_dir.rb +4 -3
  30. data/lib/rubygems/package/tar_header.rb +4 -3
  31. data/lib/rubygems/package/tar_output.rb +4 -3
  32. data/lib/rubygems/package/tar_reader.rb +4 -3
  33. data/lib/rubygems/package/tar_writer.rb +4 -3
  34. data/lib/rubygems/package_task.rb +4 -3
  35. data/lib/rubygems/platform.rb +4 -1
  36. data/lib/rubygems/remote_fetcher.rb +9 -3
  37. data/lib/rubygems/requirement.rb +5 -0
  38. data/lib/rubygems/security.rb +3 -3
  39. data/lib/rubygems/server.rb +33 -18
  40. data/lib/rubygems/source_index.rb +4 -4
  41. data/lib/rubygems/source_info_cache.rb +4 -2
  42. data/lib/rubygems/spec_fetcher.rb +33 -11
  43. data/lib/rubygems/specification.rb +40 -32
  44. data/lib/rubygems/test_utilities.rb +2 -2
  45. data/lib/rubygems/validator.rb +3 -4
  46. data/lib/rubygems/version.rb +1 -1
  47. data/test/gem_package_tar_test_case.rb +2 -2
  48. data/test/gemutilities.rb +15 -9
  49. data/test/insure_session.rb +1 -1
  50. data/test/plugin/exception/rubygems_plugin.rb +2 -0
  51. data/test/plugin/load/rubygems_plugin.rb +1 -0
  52. data/test/plugin/standarderror/rubygems_plugin.rb +2 -0
  53. data/test/rubygems/commands/crash_command.rb +5 -0
  54. data/test/rubygems_plugin.rb +5 -0
  55. data/test/simple_gem.rb +15 -15
  56. data/test/test_gem.rb +45 -2
  57. data/test/test_gem_command_manager.rb +14 -0
  58. data/test/test_gem_commands_contents_command.rb +7 -5
  59. data/test/test_gem_commands_environment_command.rb +3 -1
  60. data/test/test_gem_commands_fetch_command.rb +21 -1
  61. data/test/test_gem_commands_install_command.rb +2 -4
  62. data/test/test_gem_commands_query_command.rb +33 -6
  63. data/test/test_gem_commands_server_command.rb +9 -2
  64. data/test/test_gem_commands_uninstall_command.rb +4 -2
  65. data/test/test_gem_commands_unpack_command.rb +46 -2
  66. data/test/test_gem_config_file.rb +2 -0
  67. data/test/test_gem_dependency.rb +11 -0
  68. data/test/test_gem_doc_manager.rb +1 -1
  69. data/test/test_gem_indexer.rb +2 -2
  70. data/test/test_gem_installer.rb +1 -1
  71. data/test/test_gem_package_tar_input.rb +1 -1
  72. data/test/test_gem_package_tar_writer.rb +3 -3
  73. data/test/test_gem_platform.rb +19 -0
  74. data/test/test_gem_server.rb +11 -0
  75. data/test/test_gem_source_index.rb +2 -2
  76. data/test/test_gem_spec_fetcher.rb +42 -0
  77. data/test/test_gem_specification.rb +46 -7
  78. data/util/{gem_prelude.rb.template → gem_prelude.rb} +53 -23
  79. metadata +16 -6
  80. metadata.gz.sig +0 -0
@@ -2,7 +2,7 @@ require File.expand_path('../gemutilities', __FILE__)
2
2
  require 'rubygems/indexer'
3
3
 
4
4
  unless ''.respond_to? :to_xs then
5
- warn "Gem::Indexer tests are being skipped. Install builder gem."
5
+ warn "Gem::Indexer tests are being skipped. Install builder gem." if $VERBOSE
6
6
  end
7
7
 
8
8
  class TestGemIndexer < RubyGemTestCase
@@ -165,7 +165,7 @@ pl-1-i386-linux
165
165
  <title>ExampleForge gems</title>
166
166
  <link>http://example.com</link>
167
167
  <description>Recently released gems from http://example.com</description>
168
- <generator>RubyGems v#{Gem::RubyGemsVersion}</generator>
168
+ <generator>RubyGems v#{Gem::VERSION}</generator>
169
169
  <docs>http://cyber.law.harvard.edu/rss/rss.html</docs>
170
170
  <item>
171
171
  <title>a-2</title>
@@ -63,7 +63,7 @@ load Gem.bin_path('a', 'my_exec', version)
63
63
  #{Gem.ruby}: No such file or directory -- extconf.rb (LoadError)
64
64
  EOF
65
65
 
66
- assert_match %r%#{Regexp.escape Gem.ruby} extconf.rb%,
66
+ assert_match %r%#{Regexp.escape Gem.ruby} extconf\.rb%,
67
67
  File.read(gem_make_out)
68
68
  assert_match %r%#{Regexp.escape Gem.ruby}: No such file%,
69
69
  File.read(gem_make_out)
@@ -41,7 +41,7 @@ class TestGemPackageTarInput < TarTestCase
41
41
  meta = @spec.to_yaml
42
42
 
43
43
  f.write tar_file_header("metadata", "", 0644, meta.size)
44
- f.write meta + "\0" * (1024 - meta.size)
44
+ f.write meta + "\0" * (1024 - meta.size)
45
45
  f.write "\0" * 1024
46
46
  end
47
47
 
@@ -39,7 +39,7 @@ class TestTarWriter < TarTestCase
39
39
  def test_add_file_simple_padding
40
40
  @tar_writer.add_file_simple 'x', 0, 100
41
41
 
42
- assert_headers_equal tar_file_header('x', '', 0, 100),
42
+ assert_headers_equal tar_file_header('x', '', 0, 100),
43
43
  @io.string[0, 512]
44
44
 
45
45
  assert_equal "\0" * 512, @io.string[512, 512]
@@ -54,7 +54,7 @@ class TestTarWriter < TarTestCase
54
54
  end
55
55
 
56
56
  def test_add_file_simple_size
57
- assert_raises Gem::Package::TarWriter::FileOverflow do
57
+ assert_raises Gem::Package::TarWriter::FileOverflow do
58
58
  @tar_writer.add_file_simple("lib/foo/bar", 0, 10) do |io|
59
59
  io.write "1" * 11
60
60
  end
@@ -62,7 +62,7 @@ class TestTarWriter < TarTestCase
62
62
  end
63
63
 
64
64
  def test_add_file_unseekable
65
- assert_raises Gem::Package::NonSeekableIO do
65
+ assert_raises Gem::Package::NonSeekableIO do
66
66
  Gem::Package::TarWriter.new(Object.new).add_file 'x', 0
67
67
  end
68
68
  end
@@ -30,6 +30,9 @@ class TestGemPlatform < RubyGemTestCase
30
30
  'hppa2.0w-hpux11.31' => ['hppa2.0w', 'hpux', '11'],
31
31
  'java' => [nil, 'java', nil],
32
32
  'jruby' => [nil, 'java', nil],
33
+ 'universal-dotnet' => ['universal', 'dotnet', nil],
34
+ 'universal-dotnet2.0' => ['universal', 'dotnet', '2.0'],
35
+ 'universal-dotnet4.0' => ['universal', 'dotnet', '4.0'],
33
36
  'powerpc-aix5.3.0.0' => ['powerpc', 'aix', '5'],
34
37
  'powerpc-darwin7' => ['powerpc', 'darwin', '7'],
35
38
  'powerpc-darwin8' => ['powerpc', 'darwin', '8'],
@@ -227,6 +230,22 @@ class TestGemPlatform < RubyGemTestCase
227
230
  util_set_arch 'java'
228
231
  assert_match 'java', Gem::Platform.local
229
232
  assert_match 'jruby', Gem::Platform.local
233
+
234
+ util_set_arch 'universal-dotnet2.0'
235
+ assert_match 'universal-dotnet', Gem::Platform.local
236
+ assert_match 'universal-dotnet-2.0', Gem::Platform.local
237
+ refute_match 'universal-dotnet-4.0', Gem::Platform.local
238
+ assert_match 'dotnet', Gem::Platform.local
239
+ assert_match 'dotnet-2.0', Gem::Platform.local
240
+ refute_match 'dotnet-4.0', Gem::Platform.local
241
+
242
+ util_set_arch 'universal-dotnet4.0'
243
+ assert_match 'universal-dotnet', Gem::Platform.local
244
+ refute_match 'universal-dotnet-2.0', Gem::Platform.local
245
+ assert_match 'universal-dotnet-4.0', Gem::Platform.local
246
+ assert_match 'dotnet', Gem::Platform.local
247
+ refute_match 'dotnet-2.0', Gem::Platform.local
248
+ assert_match 'dotnet-4.0', Gem::Platform.local
230
249
 
231
250
  util_set_arch 'powerpc-darwin'
232
251
  assert_match 'powerpc-darwin', Gem::Platform.local
@@ -20,6 +20,17 @@ class TestGemServer < RubyGemTestCase
20
20
  @res = WEBrick::HTTPResponse.new :HTTPVersion => '1.0'
21
21
  end
22
22
 
23
+ def test_spec_dirs
24
+ s = Gem::Server.new Gem.dir, process_based_port, false
25
+
26
+ assert_equal [File.join(Gem.dir, 'specifications')], s.spec_dirs
27
+
28
+ s = Gem::Server.new [Gem.dir, Gem.dir], process_based_port, false
29
+
30
+ assert_equal [File.join(Gem.dir, 'specifications'),
31
+ File.join(Gem.dir, 'specifications')], s.spec_dirs
32
+ end
33
+
23
34
  def test_Marshal
24
35
  data = StringIO.new "GET /Marshal.#{Gem.marshal_version} HTTP/1.0\r\n\r\n"
25
36
  @req.parse data
@@ -85,7 +85,7 @@ Gem::Specification.new do |s|
85
85
  current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
86
86
  s.specification_version = 2
87
87
 
88
- if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
88
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
89
89
  else
90
90
  end
91
91
  else
@@ -334,7 +334,7 @@ WARNING: Invalid .gemspec format in '#{spec_file}'
334
334
  end
335
335
 
336
336
  def test_refresh_bang
337
- a1_spec = File.join @gemhome, "specifications", @a1.spec_name
337
+ a1_spec = File.join @gemhome, "specifications", @a1.spec_name
338
338
 
339
339
  FileUtils.mv a1_spec, @tempdir
340
340
 
@@ -115,6 +115,21 @@ class TestGemSpecFetcher < RubyGemTestCase
115
115
  assert_equal [[@pl1.full_name, @gem_repo]], spec_names
116
116
  end
117
117
 
118
+ def test_fetch_with_errors_mismatched_platform
119
+ util_set_arch 'hrpa-989'
120
+
121
+ @fetcher.data["#{@gem_repo}#{Gem::MARSHAL_SPEC_DIR}#{@pl1.original_name}.gemspec.rz"] =
122
+ util_zip(Marshal.dump(@pl1))
123
+
124
+ dep = Gem::Dependency.new 'pl', 1
125
+ specs_and_sources, errors = @sf.fetch_with_errors dep
126
+
127
+ assert_equal 0, specs_and_sources.size
128
+ assert_equal 1, errors.size
129
+
130
+ assert_equal "i386-linux", errors[0].platforms.first
131
+ end
132
+
118
133
  def test_fetch_spec
119
134
  spec_uri = "#{@gem_repo}#{Gem::MARSHAL_SPEC_DIR}#{@a1.spec_name}"
120
135
  @fetcher.data["#{spec_uri}.rz"] = util_zip(Marshal.dump(@a1))
@@ -220,6 +235,33 @@ class TestGemSpecFetcher < RubyGemTestCase
220
235
  assert_equal [], specs
221
236
  end
222
237
 
238
+ def test_find_matching_with_errors_matched_platform
239
+ util_set_arch 'i386-linux'
240
+
241
+ dep = Gem::Dependency.new 'pl', 1
242
+ specs, errors = @sf.find_matching_with_errors dep
243
+
244
+ expected = [
245
+ [['pl', Gem::Version.new(1), 'i386-linux'], @gem_repo],
246
+ ]
247
+
248
+ assert_equal expected, specs
249
+ assert_equal 0, errors.size
250
+ end
251
+
252
+ def test_find_matching_with_errors_invalid_platform
253
+ util_set_arch 'hrpa-899'
254
+
255
+ dep = Gem::Dependency.new 'pl', 1
256
+ specs, errors = @sf.find_matching_with_errors dep
257
+
258
+ assert_equal 0, specs.size
259
+
260
+ assert_equal 1, errors.size
261
+
262
+ assert_equal "i386-linux", errors[0].platforms.first
263
+ end
264
+
223
265
  def test_find_all_platforms
224
266
  util_set_arch 'i386-freebsd6'
225
267
 
@@ -473,6 +473,31 @@ end
473
473
  assert_equal expected, @a1.files.sort
474
474
  end
475
475
 
476
+ def test_files_append
477
+ @a1.files = %w(files bin/common)
478
+ @a1.test_files = %w(test_files bin/common)
479
+ @a1.executables = %w(executables common)
480
+ @a1.extra_rdoc_files = %w(extra_rdoc_files bin/common)
481
+ @a1.extensions = %w(extensions bin/common)
482
+
483
+ expected = %w[
484
+ bin/common
485
+ bin/executables
486
+ extensions
487
+ extra_rdoc_files
488
+ files
489
+ test_files
490
+ ]
491
+ assert_equal expected, @a1.files.sort
492
+
493
+ @a1.files << "generated_file.c"
494
+
495
+ expected << "generated_file.c"
496
+ expected.sort!
497
+
498
+ assert_equal expected, @a1.files.sort
499
+ end
500
+
476
501
  def test_files_duplicate
477
502
  @a2.files = %w[a b c d b]
478
503
  @a2.extra_rdoc_files = %w[x y z x]
@@ -549,7 +574,7 @@ end
549
574
  'i386-mswin32_80' => 'a-1-x86-mswin32-80',
550
575
  'i386-mingw32' => 'a-1-x86-mingw32'
551
576
  }
552
-
577
+
553
578
  test_cases.each do |arch, expected|
554
579
  util_set_arch arch
555
580
  @a1.platform = 'current'
@@ -748,14 +773,14 @@ Gem::Specification.new do |s|
748
773
  s.files = [\"lib/code.rb\"]
749
774
  s.homepage = %q{http://example.com}
750
775
  s.require_paths = [\"lib\"]
751
- s.rubygems_version = %q{#{Gem::RubyGemsVersion}}
776
+ s.rubygems_version = %q{#{Gem::VERSION}}
752
777
  s.summary = %q{this is a summary}
753
778
 
754
779
  if s.respond_to? :specification_version then
755
780
  current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
756
781
  s.specification_version = #{Gem::Specification::CURRENT_SPECIFICATION_VERSION}
757
782
 
758
- if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
783
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
759
784
  s.add_runtime_dependency(%q<b>, [\"= 1\"])
760
785
  else
761
786
  s.add_dependency(%q<b>, [\"= 1\"])
@@ -802,7 +827,7 @@ Gem::Specification.new do |s|
802
827
  s.require_paths = [\"lib\"]
803
828
  s.requirements = [\"A working computer\"]
804
829
  s.rubyforge_project = %q{example}
805
- s.rubygems_version = %q{#{Gem::RubyGemsVersion}}
830
+ s.rubygems_version = %q{#{Gem::VERSION}}
806
831
  s.summary = %q{this is a summary}
807
832
  s.test_files = [\"test/suite.rb\"]
808
833
 
@@ -810,7 +835,7 @@ Gem::Specification.new do |s|
810
835
  current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
811
836
  s.specification_version = 3
812
837
 
813
- if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
838
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
814
839
  s.add_runtime_dependency(%q<rake>, [\"> 0.4\"])
815
840
  s.add_runtime_dependency(%q<jabber4r>, [\"> 0.0.0\"])
816
841
  s.add_runtime_dependency(%q<pqa>, [\"> 0.4\", \"<= 0.6\"])
@@ -883,7 +908,7 @@ end
883
908
 
884
909
  yaml_str = @a1.to_yaml
885
910
 
886
- same_spec = YAML.load(yaml_str)
911
+ same_spec = YAML.load yaml_str
887
912
 
888
913
  assert_equal Gem::Platform.new('powerpc-darwin7'), same_spec.platform
889
914
  assert_equal 'powerpc-darwin7.9.0', same_spec.original_platform
@@ -1173,7 +1198,7 @@ end
1173
1198
  @a1.validate
1174
1199
  end
1175
1200
 
1176
- assert_equal "expected RubyGems version #{Gem::RubyGemsVersion}, was 3",
1201
+ assert_equal "expected RubyGems version #{Gem::VERSION}, was 3",
1177
1202
  e.message
1178
1203
  end
1179
1204
 
@@ -1228,6 +1253,20 @@ end
1228
1253
  assert_equal Gem::Version.new('1'), @a1.version
1229
1254
  end
1230
1255
 
1256
+ def test_load_errors_contain_filename
1257
+ specfile = Tempfile.new(self.class.name.downcase)
1258
+ specfile.write "raise 'boom'"
1259
+ specfile.close
1260
+ begin
1261
+ Gem::Specification.load(specfile.path)
1262
+ rescue => e
1263
+ name_rexp = Regexp.new(Regexp.escape(specfile.path))
1264
+ assert e.backtrace.grep(name_rexp).any?
1265
+ end
1266
+ ensure
1267
+ specfile.delete
1268
+ end
1269
+
1231
1270
  def util_setup_validate
1232
1271
  Dir.chdir @tempdir do
1233
1272
  FileUtils.mkdir_p File.join('ext', 'a')
@@ -1,6 +1,5 @@
1
1
  # depends on: array.rb dir.rb env.rb file.rb hash.rb module.rb regexp.rb
2
2
  # vim: filetype=ruby
3
- # WARN
4
3
 
5
4
  # NOTICE: Ruby is during initialization here.
6
5
  # * Encoding.default_external does not reflects -E.
@@ -16,7 +15,7 @@ if defined?(Gem) then
16
15
  def gem(gem_name, *version_requirements)
17
16
  Gem.push_gem_version_on_load_path(gem_name, *version_requirements)
18
17
  end
19
-
18
+ private :gem
20
19
  end
21
20
 
22
21
  module Gem
@@ -43,7 +42,7 @@ if defined?(Gem) then
43
42
  def self.path
44
43
  @gem_path ||= nil
45
44
  unless @gem_path
46
- paths = [ENV['GEM_PATH']]
45
+ paths = [ENV['GEM_PATH'] || default_path]
47
46
  paths << APPLE_GEM_HOME if defined? APPLE_GEM_HOME
48
47
  set_paths(paths.compact.join(File::PATH_SEPARATOR))
49
48
  end
@@ -67,7 +66,8 @@ if defined?(Gem) then
67
66
  end
68
67
 
69
68
  def self.set_home(home)
70
- home = home.gsub File::ALT_SEPARATOR, File::SEPARATOR if File::ALT_SEPARATOR
69
+ home = home.dup.force_encoding(Encoding.find('filesystem'))
70
+ home.gsub!(File::ALT_SEPARATOR, File::SEPARATOR) if File::ALT_SEPARATOR
71
71
  @gem_home = home
72
72
  end
73
73
 
@@ -88,9 +88,24 @@ if defined?(Gem) then
88
88
  end
89
89
 
90
90
  @gem_path.uniq!
91
+ @gem_path.map!{|x|x.force_encoding(Encoding.find('filesystem'))}
92
+ end
93
+
94
+ def self.user_home
95
+ @user_home ||= File.expand_path("~").force_encoding(Encoding.find('filesystem'))
96
+ rescue
97
+ if File::ALT_SEPARATOR then
98
+ "C:/"
99
+ else
100
+ "/"
101
+ end
91
102
  end
92
103
 
93
- # INCLUDE rubygems/defaults
104
+ # begin rubygems/defaults
105
+ # NOTE: this require will be replaced with in-place eval before compilation.
106
+ require 'lib/rubygems/defaults.rb'
107
+ # end rubygems/defaults
108
+
94
109
 
95
110
  ##
96
111
  # Methods before this line will be removed when QuickLoader is replaced
@@ -130,18 +145,42 @@ if defined?(Gem) then
130
145
  Gem::GEM_PRELUDE_METHODS.each do |method_name|
131
146
  undef_method method_name
132
147
  end
148
+ undef_method :const_missing
149
+ undef_method :method_missing
133
150
  end
134
151
 
135
152
  Kernel.module_eval do
136
153
  undef_method :gem if method_defined? :gem
137
154
  end
138
155
 
139
- $".delete File.join(Gem::ConfigMap[:rubylibprefix],
140
- Gem::ConfigMap[:ruby_version], 'rubygems.rb')
141
-
156
+ $".delete path_to_full_rubygems_library
157
+ $".each do |path|
158
+ if /#{Regexp.escape File::SEPARATOR}rubygems\.rb\z/ =~ path
159
+ raise LoadError, "another rubygems is already loaded from #{path}"
160
+ end
161
+ end
142
162
  require 'rubygems'
143
163
  end
144
164
 
165
+ def self.fake_rubygems_as_loaded
166
+ path = path_to_full_rubygems_library
167
+ $" << path unless $".include?(path)
168
+ end
169
+
170
+ def self.path_to_full_rubygems_library
171
+ installed_path = File.join(Gem::ConfigMap[:rubylibprefix], Gem::ConfigMap[:ruby_version])
172
+ if $:.include?(installed_path)
173
+ return File.join(installed_path, 'rubygems.rb')
174
+ else # e.g., on test-all
175
+ $:.each do |dir|
176
+ if File.exist?( path = File.join(dir, 'rubygems.rb') )
177
+ return path
178
+ end
179
+ end
180
+ raise LoadError, 'rubygems.rb'
181
+ end
182
+ end
183
+
145
184
  GemPaths = {}
146
185
  GemVersions = {}
147
186
 
@@ -194,19 +233,11 @@ if defined?(Gem) then
194
233
  Dir.entries(gems_directory).each do |gem_directory_name|
195
234
  next if gem_directory_name == "." || gem_directory_name == ".."
196
235
 
197
- dash = gem_directory_name.rindex("-")
198
- next if dash.nil?
199
-
200
- gem_name = gem_directory_name[0...dash]
236
+ next unless gem_name = gem_directory_name[/(.*)-(.*)/, 1]
237
+ new_version = integers_for($2)
201
238
  current_version = GemVersions[gem_name]
202
- new_version = integers_for(gem_directory_name[dash+1..-1])
203
-
204
- if current_version then
205
- if (current_version <=> new_version) == -1 then
206
- GemVersions[gem_name] = new_version
207
- GemPaths[gem_name] = File.join(gems_directory, gem_directory_name)
208
- end
209
- else
239
+
240
+ if !current_version or (current_version <=> new_version) < 0 then
210
241
  GemVersions[gem_name] = new_version
211
242
  GemPaths[gem_name] = File.join(gems_directory, gem_directory_name)
212
243
  end
@@ -236,7 +267,7 @@ if defined?(Gem) then
236
267
  require_paths.first.instance_variable_set(:@gem_prelude_index, true)
237
268
  end
238
269
  # gem directories must come after -I and ENV['RUBYLIB']
239
- $:[$:.index(ConfigMap[:sitelibdir]),0] = require_paths
270
+ $:[$:.index{|e|e.instance_variable_defined?(:@gem_prelude_index)}||-1,0] = require_paths
240
271
  end
241
272
 
242
273
  def const_missing(constant)
@@ -262,8 +293,7 @@ if defined?(Gem) then
262
293
 
263
294
  begin
264
295
  Gem.push_all_highest_version_gems_on_load_path
265
- $" << File.join(Gem::ConfigMap[:rubylibprefix],
266
- Gem::ConfigMap[:ruby_version], "rubygems.rb")
296
+ Gem::QuickLoader.fake_rubygems_as_loaded
267
297
  rescue Exception => e
268
298
  puts "Error loading gem paths on load path in gem_prelude"
269
299
  puts e