модуль ActiveSupport::Autoload
Автозагрузка и удобства для немедленной загрузки вашей библиотеки.
Этот модуль позволяет определять автозагрузку, основываясь на соглашениях Rails (т.е. нет необходимости определять путь, он автоматически определяется на основе имени файла) и также определять набор констант, которые необходимо загрузить немедленно:
module MyLib
extend ActiveSupport::Autoload
autoload :Model
eager_autoload do
autoload :Cache
end
end
Затем вашу библиотеку можно загрузить немедленно, просто вызвав:
MyLib.eager_load!
Открытые методы экземпляра
# 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 Вызывает метод суперкласса
# 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
# 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
# File activesupport/lib/active_support/dependencies/autoload.rb, line 75 def autoloads @_autoloads end
# 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
# File activesupport/lib/active_support/dependencies/autoload.rb, line 71
def eager_load!
@_autoloads.each_value { |file| require file }
end
© 2004–2018 David Heinemeier Hansson
Licensed under the MIT License.