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
# File activesupport/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  Calls superclass method 
  # File activesupport/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
# File activesupport/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
# File activesupport/lib/active_support/dependencies/autoload.rb, line 73 def autoloads @_autoloads end
# File activesupport/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
# File activesupport/lib/active_support/dependencies/autoload.rb, line 69
def eager_load!
  @_autoloads.each_value { |file| require file }
end 
    © 2004–2018 David Heinemeier Hansson
Licensed under the MIT License.