Module: ActiveSupport::Autoload
Relationships & Source Files | |
Extension / Inclusion / Inheritance Descendants | |
Extended In:
::AbstractController,
::ActionController,
::ActionController::Caching,
::ActionDispatch,
::ActionDispatch::Http,
::ActionDispatch::Routing,
::ActionMailer,
::ActionView,
::ActionView::Helpers,
ActionView::Helpers::Tags,
::ActionView::Template,
::ActiveJob,
::ActiveJob::QueueAdapters,
::ActiveModel,
::ActiveModel::Serializers,
::ActiveRecord,
::ActiveRecord::Associations,
ActiveRecord::Associations::Preloader,
::ActiveRecord::AttributeMethods,
::ActiveRecord::ConnectionAdapters,
::ActiveRecord::Locking,
::ActiveRecord::Scoping,
::ActiveRecord::Tasks,
::ActiveSupport,
NumberHelper,
::Rails
| |
Defined in: | activesupport/lib/active_support/dependencies/autoload.rb |
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 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)
[ GitHub ]# 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
#autoload_under(path)
[ GitHub ]# 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
#autoloads
[ GitHub ]# File 'activesupport/lib/active_support/dependencies/autoload.rb', line 73
def autoloads @_autoloads end
#eager_autoload
[ GitHub ]# 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
#eager_load!
[ GitHub ]# File 'activesupport/lib/active_support/dependencies/autoload.rb', line 69
def eager_load! @_autoloads.each_value { |file| require file } end