Spec-Zone.ru › Ruby on Rails 7.2

класс Rails::Paths::Root

Родитель:
Объект

Этот объект представляет собой расширенный хэш, который ведет себя как корень системы Rails::Paths. Он позволяет собирать информацию о структуре путей приложения через API, подобный API хэша. Требует физический путь при инициализации.

root = Root.new "/rails"
root.add "app/controllers", eager_load: true

Вышеприведенная команда создает новый корневой объект и добавляет путь “app/controllers”. Это означает, что мы можем получить объект Rails::Paths::Path обратно, как показано ниже:

path = root["app/controllers"]
path.eager_load?               # => true
path.is_a?(Rails::Paths::Path) # => true

Объект Путь является просто перечисляемым и позволяет легко добавлять дополнительные пути:

path.is_a?(Enumerable) # => true
path.to_ary.inspect    # => ["app/controllers"]

path << "lib/controllers"
path.to_ary.inspect    # => ["app/controllers", "lib/controllers"]

Обратите внимание, что при добавлении пути с помощью add, созданный объект Путь уже содержит путь с тем же значением пути, что и в add. В некоторых ситуациях это поведение может быть нежелательным, поэтому вы можете использовать :with в качестве опции.

root.add "config/routes", with: "config/routes.rb"
root["config/routes"].inspect # => ["config/routes.rb"]

Метод add принимает следующие опции в качестве аргументов: eager_load, autoload, autoload_once, и glob.

Наконец, объект Путь также предоставляет несколько вспомогательных функций:

root = Root.new "/rails"
root.add "app/controllers"

root["app/controllers"].expanded # => ["/rails/app/controllers"]
root["app/controllers"].existent # => ["/rails/app/controllers"]

Дополнительную информацию можно найти в документации Rails::Paths::Path.

Атрибуты

path[RW]

Открытые методы класса

new(path) Показать исходный код
# File railties/lib/rails/paths.rb, line 54
def initialize(path)
  @path = path
  @root = {}
end

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

[](path) Показать исходный код
# File railties/lib/rails/paths.rb, line 69
def [](path)
  @root[path]
end
[]=(path, value) Показать исходный код
# File railties/lib/rails/paths.rb, line 59
def []=(path, value)
  glob = self[path] ? self[path].glob : nil
  add(path, with: value, glob: glob)
end
add(path, options = {}) Показать исходный код
# File railties/lib/rails/paths.rb, line 64
def add(path, options = {})
  with = Array(options.fetch(:with, path))
  @root[path] = Path.new(self, path, with, options)
end
all_paths() Показать исходный код
# File railties/lib/rails/paths.rb, line 85
def all_paths
  values.tap(&:uniq!)
end
autoload_once() Показать исходный код
# File railties/lib/rails/paths.rb, line 89
def autoload_once
  filter_by(&:autoload_once?)
end
autoload_paths() Показать исходный код
# File railties/lib/rails/paths.rb, line 97
def autoload_paths
  filter_by(&:autoload?)
end
eager_load() Показать исходный код
# File railties/lib/rails/paths.rb, line 93
def eager_load
  filter_by(&:eager_load?)
end
keys() Показать исходный код
# File railties/lib/rails/paths.rb, line 77
def keys
  @root.keys
end
load_paths() Показать исходный код
# File railties/lib/rails/paths.rb, line 101
def load_paths
  filter_by(&:load_path?)
end
values() Показать исходный код
# File railties/lib/rails/paths.rb, line 73
def values
  @root.values
end
values_at(*list) Показать исходный код
# File railties/lib/rails/paths.rb, line 81
def values_at(*list)
  @root.values_at(*list)
end

© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.

Spec-Zone.ru

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