Spec-Zone.ru › Ruby on Rails 6.0

модуль ActiveSupport::Autoload

Автозагрузка и удобства для немедленной загрузки вашей библиотеки.

Этот модуль позволяет определять автозагрузку, основываясь на соглашениях Rails (т.е. нет необходимости определять путь, он автоматически определяется на основе имени файла) и также определять набор констант, которые необходимо загрузить немедленно:

module MyLib
  extend ActiveSupport::Autoload

  autoload :Model

  eager_autoload do
    autoload :Cache
  end
end

Затем вашу библиотеку можно загрузить немедленно, просто вызвав:

MyLib.eager_load!

Открытые методы экземпляра

autoload(const_name, path = @_at_path) Показать исходный код
# 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
Вызывает метод суперкласса
autoload_at(path) { || ... } Показать исходный код
# 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
autoload_under(path) { || ... } Показать исходный код
# 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
autoloads() Показать исходный код
# File activesupport/lib/active_support/dependencies/autoload.rb, line 75
def autoloads
  @_autoloads
end
eager_autoload() { || ... } Показать исходный код
# 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
eager_load!() Показать исходный код
# 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.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API