summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/rubygems.rb7
-rw-r--r--lib/rubygems/core_ext/kernel_require.rb8
2 files changed, 13 insertions, 2 deletions
diff --git a/lib/rubygems.rb b/lib/rubygems.rb
index 47b1ce69d2..ad7ab10756 100644
--- a/lib/rubygems.rb
+++ b/lib/rubygems.rb
@@ -1216,6 +1216,13 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
##
# Find a Gem::Specification of default gem from +path+
+ def find_default_spec(path)
+ @path_to_default_spec_map[path]
+ end
+
+ ##
+ # Find an unresolved Gem::Specification of default gem from +path+
+
def find_unresolved_default_spec(path)
default_spec = @path_to_default_spec_map[path]
default_spec if default_spec && loaded_specs[default_spec.name] != default_spec
diff --git a/lib/rubygems/core_ext/kernel_require.rb b/lib/rubygems/core_ext/kernel_require.rb
index 50e3ea89b4..073966b696 100644
--- a/lib/rubygems/core_ext/kernel_require.rb
+++ b/lib/rubygems/core_ext/kernel_require.rb
@@ -42,7 +42,11 @@ module Kernel
# If +path+ belongs to a default gem, we activate it and then go straight
# to normal require
- if spec = Gem.find_unresolved_default_spec(path)
+ if spec = Gem.find_default_spec(path)
+ name = spec.name
+
+ next if Gem.loaded_specs[name]
+
# Ensure -I beats a default gem
resolved_path = begin
rp = nil
@@ -60,7 +64,7 @@ module Kernel
rp
end
- Kernel.send(:gem, spec.name, Gem::Requirement.default_prerelease) unless
+ Kernel.send(:gem, name, Gem::Requirement.default_prerelease) unless
resolved_path
next