rubygems-update 1.3.6 → 1.3.7

Sign up to get free protection for your applications and to get access to all the features.

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