summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authordrbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-12-01 00:42:36 +0000
committerdrbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-12-01 00:42:36 +0000
commit5db8f999431b22b31c4feecbabb498047bc3e6d2 (patch)
tree995b3e8242aa2b0d03a153c664c79e331f6dd387 /lib
parent18a3774438469b6da3f44635e38c8b00f36c4cd7 (diff)
* 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.rb23
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