module ActiveSupport::Dependencies::ZeitwerkIntegration
def autoload_once?(autoload_path)
def autoload_once?(autoload_path) Dependencies.autoload_once_paths.include?(autoload_path) end
def decorate_dependencies
def decorate_dependencies Dependencies.unhook! Dependencies.singleton_class.prepend(Decorations) Object.prepend(RequireDependency) end
def eager_load?(autoload_path)
def eager_load?(autoload_path) Dependencies._eager_load_paths.member?(autoload_path) end
def freeze_paths
def freeze_paths Dependencies.autoload_paths.freeze Dependencies.autoload_once_paths.freeze Dependencies._eager_load_paths.freeze end
def setup_autoloaders(enable_reloading)
def setup_autoloaders(enable_reloading) Dependencies.autoload_paths.each do |autoload_path| # Zeitwerk only accepts existing directories in `push_dir` to # prevent misconfigurations. next unless File.directory?(autoload_path) autoloader = \ autoload_once?(autoload_path) ? Rails.autoloaders.once : Rails.autoloaders.main autoloader.push_dir(autoload_path) autoloader.do_not_eager_load(autoload_path) unless eager_load?(autoload_path) end Rails.autoloaders.main.enable_reloading if enable_reloading Rails.autoloaders.each(&:setup) end
def take_over(enable_reloading:)
def take_over(enable_reloading:) setup_autoloaders(enable_reloading) freeze_paths decorate_dependencies end