class Rails::Command::Base
Публичные методы класса
# File railties/lib/rails/command/base.rb, line 75
def banner(*)
"#{executable} #{arguments.map(&:usage).join(' ')} [options]".squish!
end Использование стандартного баннера Rails.
# 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'
# 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'
# 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`.
# 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 в каталоге, расположенном на один уровень выше каталога команды.
# File railties/lib/rails/command/base.rb, line 19 def engine? defined?(ENGINE_ROOT) end
Возвращает true, если приложение является движком Rails.
# File railties/lib/rails/command/base.rb, line 70
def executable
"bin/rails #{command_name}"
end # File railties/lib/rails/command/base.rb, line 46 def hide_command! Rails::Command.hidden_commands << self end
Удобный метод для скрытия этой команды из доступных при выполнении `rails command`.
# 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 в имени класса удаляется.
# File railties/lib/rails/command/base.rb, line 66 def printing_commands namespaced_commands end
# 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 в файле.
Публичные методы экземпляра
# 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.