aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/lib
diff options
context:
space:
mode:
authorJean Boussier <jean.boussier@gmail.com>2019-07-15 16:36:35 +0200
committerJean Boussier <jean.boussier@gmail.com>2019-07-16 10:56:10 +0200
commit223a187b9e73d9ad568d7333c4a1d0f84362d547 (patch)
tree30f8f01ac9bb8bc164c26fd2e18f3fcc1ff59074 /activesupport/lib
parent79ef8310bec5eb2e3d05134b36bccda821703652 (diff)
downloadrails-223a187b9e73d9ad568d7333c4a1d0f84362d547.tar.gz
rails-223a187b9e73d9ad568d7333c4a1d0f84362d547.tar.bz2
rails-223a187b9e73d9ad568d7333c4a1d0f84362d547.zip
Fix Loadable.exclude_from to also reset Kernel#require
Diffstat (limited to 'activesupport/lib')
-rw-r--r--activesupport/lib/active_support/dependencies.rb26
1 files changed, 23 insertions, 3 deletions
diff --git a/activesupport/lib/active_support/dependencies.rb b/activesupport/lib/active_support/dependencies.rb
index 5dc47b20c6..32cb3a53f4 100644
--- a/activesupport/lib/active_support/dependencies.rb
+++ b/activesupport/lib/active_support/dependencies.rb
@@ -201,6 +201,11 @@ module ActiveSupport #:nodoc:
end
end
+ def self.include_into(base)
+ base.include(self)
+ append_features(base)
+ end
+
def const_missing(const_name)
from_mod = anonymous? ? guess_for_anonymous(const_name) : self
Dependencies.load_missing_constant(from_mod, const_name)
@@ -230,6 +235,21 @@ module ActiveSupport #:nodoc:
base.class_eval do
define_method(:load, Kernel.instance_method(:load))
private :load
+
+ define_method(:require, Kernel.instance_method(:require))
+ private :require
+ end
+ end
+
+ def self.include_into(base)
+ base.include(self)
+
+ if base.instance_method(:load).owner == base
+ base.remove_method(:load)
+ end
+
+ if base.instance_method(:require).owner == base
+ base.remove_method(:require)
end
end
@@ -325,9 +345,9 @@ module ActiveSupport #:nodoc:
end
def hook!
- Object.class_eval { include Loadable }
- Module.class_eval { include ModuleConstMissing }
- Exception.class_eval { include Blamable }
+ Loadable.include_into(Object)
+ ModuleConstMissing.include_into(Module)
+ Exception.include(Blamable)
end
def unhook!