Module: ActiveSupport::Autoload
Overview
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!
Instance Method Summary
Instance Method Details
#autoload(const_name, path = @_at_path)
[ GitHub ]# File 'activesupport/lib/active_support/dependencies/autoload.rb', line 42
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 @_eagerloaded_constants ||= [] @_eagerloaded_constants << const_name end super const_name, path end
#autoload_at(path)
[ GitHub ]# File 'activesupport/lib/active_support/dependencies/autoload.rb', line 63
def autoload_at(path) @_at_path, old_path = path, @_at_path yield ensure @_at_path = old_path end
#autoload_under(path)
[ GitHub ]# File 'activesupport/lib/active_support/dependencies/autoload.rb', line 56
def autoload_under(path) @_under_path, old_path = path, @_under_path yield ensure @_under_path = old_path end
#eager_autoload
[ GitHub ]# File 'activesupport/lib/active_support/dependencies/autoload.rb', line 70
def eager_autoload old_eager, @_eager_autoload = @_eager_autoload, true yield ensure @_eager_autoload = old_eager end
#eager_load!
[ GitHub ]# File 'activesupport/lib/active_support/dependencies/autoload.rb', line 77
def eager_load! if @_eagerloaded_constants @_eagerloaded_constants.each { |const_name| const_get(const_name) } @_eagerloaded_constants = nil end end