summaryrefslogtreecommitdiff
path: root/lib/rubygems/custom_require.rb
diff options
context:
space:
mode:
authorryan <ryan@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2011-03-01 09:41:32 +0000
committerryan <ryan@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2011-03-01 09:41:32 +0000
commit25a9b62d45ddd60a231272567c7dda9337da9b62 (patch)
treee72ba4c9c01cba5fb510eb1eafaba76d998baf4c /lib/rubygems/custom_require.rb
parent86bb0af7ea3b50f72e6845a6f5f64cb1b23fd279 (diff)
Import rubygems 1.6.0 (released version @ 58d8a0b9)
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30996 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/rubygems/custom_require.rb')
-rw-r--r--lib/rubygems/custom_require.rb19
1 files changed, 17 insertions, 2 deletions
diff --git a/lib/rubygems/custom_require.rb b/lib/rubygems/custom_require.rb
index 88e7aa4c4c..ebe7b05558 100644
--- a/lib/rubygems/custom_require.rb
+++ b/lib/rubygems/custom_require.rb
@@ -31,8 +31,23 @@ module Kernel
# The normal <tt>require</tt> functionality of returning false if
# that file has already been loaded is preserved.
- def require(path) # :doc:
- gem_original_require path
+ def require path
+ if Gem.unresolved_deps.empty? or Gem.loaded_path? path then
+ gem_original_require path
+ else
+ specs = Gem.searcher.find_in_unresolved path
+ unless specs.empty? then
+ specs = [specs.last]
+ else
+ specs = Gem.searcher.find_in_unresolved_tree path
+ end
+
+ specs.each do |spec|
+ Gem.activate spec.name, spec.version # FIX: this is dumb
+ end
+
+ return gem_original_require path
+ end
rescue LoadError => load_error
if load_error.message.end_with?(path) and Gem.try_activate(path) then
return gem_original_require(path)