Spec-Zone.ru › Ruby on Rails 8.1

class Rails::Paths::Root

Родительский класс:
Object

Этот объект представляет собой расширенный хеш, который служит корнем системы Rails::Paths. Он позволяет собирать информацию о том, как вы хотите структурировать пути приложения, с помощью 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 — это просто перечислимый объект, позволяющий легко добавлять дополнительные пути:

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

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

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

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

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

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

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