Sha256: 500d1cb7dc37ebb3f1603ce7cf8b7f31121c3a7ddd1b2e500b224053050bd720

Contents?: true

Size: 1.06 KB

Versions: 74

Compression:

Stored size: 1.06 KB

Contents

# frozen_string_literal: true

module Rails
  class Autoloaders # :nodoc:
    require_relative "autoloaders/inflector"

    include Enumerable

    attr_reader :main, :once

    def initialize
      # This `require` delays loading the library on purpose.
      #
      # In Rails 7.0.0, railties/lib/rails.rb loaded Zeitwerk as a side-effect,
      # but a couple of edge cases related to Bundler and Bootsnap showed up.
      # They had to do with order of decoration of `Kernel#require`, something
      # the three of them do.
      #
      # Delaying this `require` up to this point is a convenient trade-off.
      require "zeitwerk"

      @main = Zeitwerk::Loader.new
      @main.tag = "rails.main"
      @main.inflector = Inflector

      @once = Zeitwerk::Loader.new
      @once.tag = "rails.once"
      @once.inflector = Inflector
    end

    def each
      yield main
      yield once
    end

    def logger=(logger)
      each { |loader| loader.logger = logger }
    end

    def log!
      each(&:log!)
    end

    def zeitwerk_enabled?
      true
    end
  end
end

Version data entries

74 entries across 70 versions & 8 rubygems

Version Path
railties-8.0.2 lib/rails/autoloaders.rb
trusty-cms-7.0.9.1 vendor/bundle/ruby/3.1.0/gems/railties-7.0.8.6/lib/rails/autoloaders.rb
trusty-cms-7.0.9.1 vendor/bundle/ruby/3.3.0/gems/railties-7.0.8.7/lib/rails/autoloaders.rb
minato_ruby_api_client-0.2.2 vendor/bundle/ruby/3.2.0/gems/railties-7.1.3.4/lib/rails/autoloaders.rb
railties-8.0.1 lib/rails/autoloaders.rb
railties-8.0.0.1 lib/rails/autoloaders.rb
railties-7.2.2.1 lib/rails/autoloaders.rb
railties-7.1.5.1 lib/rails/autoloaders.rb
railties-7.0.8.7 lib/rails/autoloaders.rb
railties-8.0.0 lib/rails/autoloaders.rb
railties-7.2.2 lib/rails/autoloaders.rb
railties-7.1.5 lib/rails/autoloaders.rb
railties-8.0.0.rc2 lib/rails/autoloaders.rb
railties-7.2.1.2 lib/rails/autoloaders.rb
railties-7.1.4.2 lib/rails/autoloaders.rb
railties-7.0.8.6 lib/rails/autoloaders.rb
railties-8.0.0.rc1 lib/rails/autoloaders.rb
railties-7.2.1.1 lib/rails/autoloaders.rb
railties-7.1.4.1 lib/rails/autoloaders.rb
railties-7.0.8.5 lib/rails/autoloaders.rb