Spec-Zone.ru › Ruby on Rails 5.0

class Rails::Paths::Root

Parent:
Объект

Этот объект — расширенный массив, который ведет себя как корень 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, созданный объект пути уже содержит путь с тем же значением пути, которое было предоставлено 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 47
def initialize(path)
  @current = nil
  @path = path
  @root = {}
end

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

[](path) Показать исходный код
# File railties/lib/rails/paths.rb, line 63
def [](path)
  @root[path]
end
[]=(path, value) Показать исходный код
# File railties/lib/rails/paths.rb, line 53
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 58
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 79
def all_paths
  values.tap(&:uniq!)
end
autoload_once() Показать исходный код
# File railties/lib/rails/paths.rb, line 83
def autoload_once
  filter_by(&:autoload_once?)
end
autoload_paths() Показать исходный код
# File railties/lib/rails/paths.rb, line 91
def autoload_paths
  filter_by(&:autoload?)
end
eager_load() Показать исходный код
# File railties/lib/rails/paths.rb, line 87
def eager_load
  filter_by(&:eager_load?)
end
keys() Показать исходный код
# File railties/lib/rails/paths.rb, line 71
def keys
  @root.keys
end
load_paths() Показать исходный код
# File railties/lib/rails/paths.rb, line 95
def load_paths
  filter_by(&:load_path?)
end
values() Показать исходный код
# File railties/lib/rails/paths.rb, line 67
def values
  @root.values
end
values_at(*list) Показать исходный код
# File railties/lib/rails/paths.rb, line 75
def values_at(*list)
  @root.values_at(*list)
end

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

Spec-Zone.ru

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