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!
Methods
Instance Public methods
autoload(const_name, path = @_at_path)
📝 Source code
# File activesupport/lib/active_support/dependencies/autoload.rb, line 37
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
🔎 See on GitHub
autoload_at(path)
📝 Source code
# File activesupport/lib/active_support/dependencies/autoload.rb, line 57
def autoload_at(path)
@_at_path, old_path = path, @_at_path
yield
ensure
@_at_path = old_path
end
🔎 See on GitHub
autoload_under(path)
📝 Source code
# File activesupport/lib/active_support/dependencies/autoload.rb, line 50
def autoload_under(path)
@_under_path, old_path = path, @_under_path
yield
ensure
@_under_path = old_path
end
🔎 See on GitHub
autoloads()
📝 Source code
# File activesupport/lib/active_support/dependencies/autoload.rb, line 75
def autoloads
@_autoloads
end
🔎 See on GitHub
eager_autoload()
📝 Source code
# File activesupport/lib/active_support/dependencies/autoload.rb, line 64
def eager_autoload
old_eager, @_eager_autoload = @_eager_autoload, true
yield
ensure
@_eager_autoload = old_eager
end
🔎 See on GitHub
eager_load!()
📝 Source code
# File activesupport/lib/active_support/dependencies/autoload.rb, line 71
def eager_load!
@_autoloads.each_value { |file| require file }
end
🔎 See on GitHub