module ActiveSupport::Autoload - activesupport-4.2.3 Documentation

# module ActiveSupport::Autoload

Autoload and eager load conveniences for your library.

This module allows you to define autoloads based on Rails conventions (i.e. no need to define the path it is automatically guessed based on the filename) and also define a set of constants that needs to be eager loaded:

    module MyLib
      extend ActiveSupport::Autoload

      autoload :Model

      eager_autoload do
        autoload :Cache
      end
    end

Then your library can be eager loaded by simply calling:

    MyLib.eager_load!

### Public Instance Methods

autoload(const_name, path = @_at_path) click to toggle source
Calls superclass method

    # File lib/active_support/dependencies/autoload.rb, line 35
    def autoload(const_name, path = @_at_path)
      unless path
        full = [name, @_under_path, const_name.to_s].compact.join("::")
        path = Inflector.underscore(full)
      end

      if @_eager_autoload
        @_autoloads[const_name] = path
      end

      super const_name, path
    end

autoload_at(path) { || ... } click to toggle source

    # File lib/active_support/dependencies/autoload.rb, line 55
    def autoload_at(path)
      @_at_path, old_path = path, @_at_path
      yield
    ensure
      @_at_path = old_path
    end

autoload_under(path) { || ... } click to toggle source

    # File lib/active_support/dependencies/autoload.rb, line 48
    def autoload_under(path)
      @_under_path, old_path = path, @_under_path
      yield
    ensure
      @_under_path = old_path
    end

autoloads() click to toggle source

    # File lib/active_support/dependencies/autoload.rb, line 73
    def autoloads
      @_autoloads
    end

eager_autoload() { || ... } click to toggle source

    # File lib/active_support/dependencies/autoload.rb, line 62
    def eager_autoload
      old_eager, @_eager_autoload = @_eager_autoload, true
      yield
    ensure
      @_eager_autoload = old_eager
    end

eager_load!() click to toggle source

    # File lib/active_support/dependencies/autoload.rb, line 69
    def eager_load!
      @_autoloads.each_value { |file| require file }
    end