модуль 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 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 Вызывает метод суперкласса
# 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.