If you're curious how Rails uses and configures Zeitwerk, here's a highly simplified version of the Rails codebase that does what we just did.

The Autoloaders class sets up a Zeitwerk loader. The autoload paths are managed by the Rails.autoloaders.main autoloader.

# railties/lib/rails/autoloaders.rb

module Rails
  class Autoloaders
    def initialize
      require "zeitwerk"

      @main = Zeitwerk::Loader.new
    end
  end
end

The Finisher module adds an initializer that adds the configured directories to the Zeitwerk loader.

# railties/lib/rails/application/finisher.rb

module Rails
  class Application
    module Finisher
      initializer :setup_main_autoloader do
        autoloader = Rails.autoloaders.main

        autoload_paths.uniq.each do |path|
          autoloader.push_dir(path)
        end

        autoloader.setup
      end
    end
  end
end