module Zeitwerk::Loader::EagerLoad
def eager_load_dir(path)
def eager_load_dir(path) raise Zeitwerk::SetupRequired unless @setup abspath = File.expand_path(path) raise Zeitwerk::Error.new("#{abspath} is not a directory") unless dir?(abspath) cnames = [] root_namespace = nil walk_up(abspath) do |dir| return if ignored_path?(dir) return if eager_load_exclusions.member?(dir) break if root_namespace = roots[dir] basename = File.basename(dir) return if hidden?(basename) unless collapse?(dir) cnames << inflector.camelize(basename, dir).to_sym end end raise Zeitwerk::Error.new("I do not manage #{abspath}") unless root_namespace return if @eager_loaded namespace = root_namespace cnames.reverse_each do |cname| # Can happen if there are no Ruby files. This is not an error condition, # the directory is actually managed. Could have Ruby files later. return unless namespace.const_defined?(cname, false) namespace = namespace.const_get(cname, false) end # A shortcircuiting test depends on the invocation of this method. Please # keep them in sync if refactored. actual_eager_load_dir(abspath, namespace) end