diff options
Diffstat (limited to 'lib/rubygems')
-rw-r--r-- | lib/rubygems/custom_require.rb | 17 |
1 files changed, 6 insertions, 11 deletions
diff --git a/lib/rubygems/custom_require.rb b/lib/rubygems/custom_require.rb index 36e3c78911..43b3136b60 100644 --- a/lib/rubygems/custom_require.rb +++ b/lib/rubygems/custom_require.rb @@ -4,6 +4,8 @@ # See LICENSE.txt for permissions. #++ +require 'rubygems' + module Kernel ## @@ -29,17 +31,10 @@ module Kernel gem_original_require path rescue LoadError => load_error if load_error.message.end_with?(path) and - begin - Gem.try_activate(path) - rescue Gem::LoadError => load_error - pat = "#{__FILE__}:#{__LINE__-2}:in " - bt = load_error.backtrace - num = bt.index {|e| e.start_with?(pat)} and bt.shift(num+2) - raise load_error - end - retry + spec = Gem.searcher.find(path) then + Gem.activate(spec.name, "= #{spec.version}") + gem_original_require path else - load_error.backtrace.shift(2) raise load_error end end @@ -47,5 +42,5 @@ module Kernel private :require private :gem_original_require -end unless Kernel.private_method_defined?(:gem_original_require) +end |