summaryrefslogtreecommitdiff
path: root/lib/rubygems/core_ext/kernel_require.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/rubygems/core_ext/kernel_require.rb')
-rwxr-xr-xlib/rubygems/core_ext/kernel_require.rb8
1 files changed, 8 insertions, 0 deletions
diff --git a/lib/rubygems/core_ext/kernel_require.rb b/lib/rubygems/core_ext/kernel_require.rb
index e6dfce644f..71062410cb 100755
--- a/lib/rubygems/core_ext/kernel_require.rb
+++ b/lib/rubygems/core_ext/kernel_require.rb
@@ -4,6 +4,8 @@
# See LICENSE.txt for permissions.
#++
+require 'monitor'
+
module Kernel
if defined?(gem_original_require) then
@@ -31,7 +33,11 @@ module Kernel
# The normal <tt>require</tt> functionality of returning false if
# that file has already been loaded is preserved.
+ ACTIVATION_MONITOR = Monitor.new
+
def require path
+ ACTIVATION_MONITOR.enter
+
spec = Gem.find_unresolved_default_spec(path)
if spec
Gem.remove_unresolved_default_spec(spec)
@@ -111,6 +117,8 @@ module Kernel
end
raise load_error
+ ensure
+ ACTIVATION_MONITOR.exit
end
private :require