lib/active_support/dependencies.rb in activesupport-6.0.0.rc1 vs lib/active_support/dependencies.rb in activesupport-6.0.0.rc2
- old
+ new
@@ -199,10 +199,15 @@
define_method :const_missing, @_const_missing
@_const_missing = nil
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)
end
@@ -228,13 +233,28 @@
module Loadable #:nodoc:
def self.exclude_from(base)
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
+
def require_or_load(file_name)
Dependencies.require_or_load(file_name)
end
# :doc:
@@ -324,12 +344,12 @@
self
end
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!
ModuleConstMissing.exclude_from(Module)
Loadable.exclude_from(Object)