Spec-Zone.ru › Ruby on Rails 5.1

class Rails::Command::Base

Parent:
Thor
Included modules:
Rails::Command::Actions

Публичные методы класса

banner(*) Показать исходный код
# File railties/lib/rails/command/base.rb, line 75
def banner(*)
  "#{executable} #{arguments.map(&:usage).join(' ')} [options]".squish!
end

Использование стандартного баннера Rails.

base_name() Показать исходный код
# File railties/lib/rails/command/base.rb, line 82
def base_name
  @base_name ||= begin
    if base = name.to_s.split("::").first
      base.underscore
    end
  end
end

Устанавливает ::base_name, учитывая текущее пространство имен класса.

Rails::Command::TestCommand.base_name # => 'rails'
command_name() Показать исходный код
# File railties/lib/rails/command/base.rb, line 93
def command_name
  @command_name ||= begin
    if command = name.to_s.split("::").last
      command.chomp!("Command")
      command.underscore
    end
  end
end

Возвращает имя команды без пространств имён.

Rails::Command::TestCommand.command_name # => 'test'
default_command_root() Показать исходный код
# File railties/lib/rails/command/base.rb, line 115
def default_command_root
  path = File.expand_path(File.join("../commands", command_root_namespace), __dir__)
  path if File.exist?(path)
end

Основной каталог для размещения дополнительных файлов, необходимых команде, расположенный на один каталог выше файла команды.

Для `Rails::Command::TestCommand`, размещенного в `rails/command/test_command.rb`, возвращается `rails/test`.

desc(usage = nil, description = nil, options = {}) Показать исходный код
# File railties/lib/rails/command/base.rb, line 25
def desc(usage = nil, description = nil, options = {})
  if usage
    super
  else
    @desc ||= ERB.new(File.read(usage_path)).result(binding) if usage_path
  end
end

Попытка получить описание из файла USAGE в каталоге, расположенном на один уровень выше каталога команды.

Вызывает метод родительского класса
engine?() Показать исходный код
# File railties/lib/rails/command/base.rb, line 19
def engine?
  defined?(ENGINE_ROOT)
end

Возвращает true, если приложение является движком Rails.

executable() Показать исходный код
# File railties/lib/rails/command/base.rb, line 70
def executable
  "bin/rails #{command_name}"
end
hide_command!() Показать исходный код
# File railties/lib/rails/command/base.rb, line 46
def hide_command!
  Rails::Command.hidden_commands << self
end

Удобный метод для скрытия этой команды из доступных при выполнении `rails command`.

namespace(name = nil) Показать исходный код
# File railties/lib/rails/command/base.rb, line 36
def namespace(name = nil)
  if name
    super
  else
    @namespace ||= super.chomp("_command").sub(/:command:/, ":")
  end
end

Удобный метод для получения пространства имен из имени класса. Он аналогичен стандартному Thor, за исключением того, что окончание Command в имени класса удаляется.

Вызывает метод родительского класса
printing_commands() Показать исходный код
# File railties/lib/rails/command/base.rb, line 66
def printing_commands
  namespaced_commands
end
usage_path() Показать исходный код
# File railties/lib/rails/command/base.rb, line 103
def usage_path
  if default_command_root
    path = File.join(default_command_root, "USAGE")
    path if File.exist?(path)
  end
end

Путь для поиска описания USAGE в файле.

Публичные методы экземпляра

help() Показать исходный код
# File railties/lib/rails/command/base.rb, line 146
def help
  if command_name = self.class.command_name
    self.class.command_help(shell, command_name)
  else
    super
  end
end
Вызывает метод родительского класса

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

Spec-Zone.ru

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