модуль 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.values.each { |file| require file }
end
© 2004–2016 David Heinemeier Hansson
Licensed under the MIT License.