summaryrefslogtreecommitdiff
path: root/lib/rubygems/core_ext
diff options
context:
space:
mode:
Diffstat (limited to 'lib/rubygems/core_ext')
-rwxr-xr-xlib/rubygems/core_ext/kernel_require.rb20
1 files changed, 20 insertions, 0 deletions
diff --git a/lib/rubygems/core_ext/kernel_require.rb b/lib/rubygems/core_ext/kernel_require.rb
index 8c85ef79fc..5986e356bc 100755
--- a/lib/rubygems/core_ext/kernel_require.rb
+++ b/lib/rubygems/core_ext/kernel_require.rb
@@ -36,6 +36,26 @@ module Kernel
path = path.to_path if path.respond_to? :to_path
+ resolved_path = begin
+ rp = nil
+ $LOAD_PATH[0...Gem.load_path_insert_index || -1].each do |lp|
+ Gem.suffixes.each do |s|
+ full_path = File.expand_path(File.join(lp, "#{path}#{s}").untaint)
+ if File.file?(full_path)
+ rp = full_path
+ break
+ end
+ end
+ break if rp
+ end
+ rp
+ end
+
+ if resolved_path
+ RUBYGEMS_ACTIVATION_MONITOR.exit
+ return gem_original_require(resolved_path)
+ end
+
if spec = Gem.find_unresolved_default_spec(path)
begin
Kernel.send(:gem, spec.name, "#{Gem::Requirement.default}.a")