summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-12-30 08:59:16 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-12-30 08:59:16 +0000
commita1f76cae297fbdddebc6e16b3a274686893565ff (patch)
tree6fe209baa581b08053a531b0bbe5ad17df8d2222
parentecebf2f2365a5d8e7c6629a39580d47d586a0e40 (diff)
downloadruby-a1f76cae297fbdddebc6e16b3a274686893565ff.tar.gz
ruby-a1f76cae297fbdddebc6e16b3a274686893565ff.tar.xz
ruby-a1f76cae297fbdddebc6e16b3a274686893565ff.zip
* gem_prelude.rb (push_all_highest_version_gems_on_load_path):
simplified. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@26201 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog5
-rw-r--r--gem_prelude.rb16
-rw-r--r--lib/rubygems/installer.rb2
-rw-r--r--lib/rubygems/test_utilities.rb27
4 files changed, 16 insertions, 34 deletions
diff --git a/ChangeLog b/ChangeLog
index 569e9fced..d8b8b6788 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,7 @@
-Wed Dec 30 17:49:47 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Wed Dec 30 17:59:14 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gem_prelude.rb (push_all_highest_version_gems_on_load_path):
+ simplified.
* lib/rubygems/command_manager.rb (Gem#load_and_instantiate):
rescue only NameError from const_get.
diff --git a/gem_prelude.rb b/gem_prelude.rb
index f83a341ff..fac6a3806 100644
--- a/gem_prelude.rb
+++ b/gem_prelude.rb
@@ -233,19 +233,11 @@ if defined?(Gem) then
Dir.entries(gems_directory).each do |gem_directory_name|
next if gem_directory_name == "." || gem_directory_name == ".."
- dash = gem_directory_name.rindex("-")
- next if dash.nil?
-
- gem_name = gem_directory_name[0...dash]
+ next unless gem_name = gem_directory_name[/(.*)-(.*)/, 1]
+ new_version = integers_for($2)
current_version = GemVersions[gem_name]
- new_version = integers_for(gem_directory_name[dash+1..-1])
-
- if current_version then
- if (current_version <=> new_version) == -1 then
- GemVersions[gem_name] = new_version
- GemPaths[gem_name] = File.join(gems_directory, gem_directory_name)
- end
- else
+
+ if !current_version or (current_version <=> new_version) < 0 then
GemVersions[gem_name] = new_version
GemPaths[gem_name] = File.join(gems_directory, gem_directory_name)
end
diff --git a/lib/rubygems/installer.rb b/lib/rubygems/installer.rb
index e9910876f..d6075dd0a 100644
--- a/lib/rubygems/installer.rb
+++ b/lib/rubygems/installer.rb
@@ -325,7 +325,7 @@ class Gem::Installer
@spec.executables.each do |filename|
filename.untaint
- bin_path = File.expand_path File.join(@gem_dir, @spec.bindir, filename)
+ bin_path = File.expand_path("#{@spec.bindir}/#{filename}", @gem_dir)
mode = File.stat(bin_path).mode | 0111
File.chmod mode, bin_path
diff --git a/lib/rubygems/test_utilities.rb b/lib/rubygems/test_utilities.rb
index 85541c9fc..751c13441 100644
--- a/lib/rubygems/test_utilities.rb
+++ b/lib/rubygems/test_utilities.rb
@@ -102,30 +102,17 @@ end
#--
# This class was added to flush out problems in Rubinius' IO implementation.
-class TempIO
-
- @@count = 0
-
+class TempIO < Tempfile
def initialize(string = '')
- @tempfile = Tempfile.new "TempIO-#{@@count += 1}"
- @tempfile.binmode
- @tempfile.write string
- @tempfile.rewind
- end
-
- def method_missing(meth, *args, &block)
- @tempfile.send(meth, *args, &block)
- end
-
- def respond_to?(meth)
- @tempfile.respond_to? meth
+ super "TempIO"
+ binmode
+ write string
+ rewind
end
def string
- @tempfile.flush
-
- Gem.read_binary @tempfile.path
+ flush
+ Gem.read_binary path
end
-
end