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)