diff options
author | drbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2012-12-01 00:42:36 +0000 |
---|---|---|
committer | drbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2012-12-01 00:42:36 +0000 |
commit | 5db8f999431b22b31c4feecbabb498047bc3e6d2 (patch) | |
tree | 995b3e8242aa2b0d03a153c664c79e331f6dd387 /lib | |
parent | 18a3774438469b6da3f44635e38c8b00f36c4cd7 (diff) | |
download | ruby-5db8f999431b22b31c4feecbabb498047bc3e6d2.tar.gz |
* lib/rubygems.rb: Search for gem deps file up the directory tree.
* test/rubygems/test_gem.rb: Test for above.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38097 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib')
-rw-r--r-- | lib/rubygems.rb | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/lib/rubygems.rb b/lib/rubygems.rb index 89f718da24..914204858c 100644 --- a/lib/rubygems.rb +++ b/lib/rubygems.rb @@ -187,9 +187,28 @@ module Gem path = path.dup.untaint if path == "-" - path = GEM_DEP_FILES.find { |f| File.exists?(f) } + here = Dir.pwd + start = here - return unless path + begin + while true + path = GEM_DEP_FILES.find { |f| File.exists?(f) } + + if path + path = File.join here, path + break + end + + Dir.chdir ".." + + # If we're at a toplevel, stop. + return if Dir.pwd == here + + here = Dir.pwd + end + ensure + Dir.chdir start + end end return unless File.exists? path |