Руби Тор: изучение метода no_commands
Если вы разработчик Ruby, вы, вероятно, знакомы с драгоценным камнем Thor. Thor — это мощный набор инструментов для создания интерфейсов командной строки (CLI) в Ruby. Он обеспечивает простой и интуитивно понятный способ создания приложений командной строки с такими функциями, как анализ команд, обработка аргументов и многое другое. В этой статье мы углубимся в один конкретный метод, предоставленный Thor, под названием no_commands
.
Метод no_commands
используется для определения методов внутри класса Thor, которые не следует рассматривать как команды. Обычно, когда вы определяете метод в классе Thor, он автоматически становится командой, которую можно выполнить из командной строки. Однако могут возникнуть ситуации, когда вы захотите определить вспомогательные методы или внутреннюю логику, которые не следует предоставлять в виде команд. Вот тут-то и пригодится метод no_commands
.
Давайте рассмотрим несколько примеров, чтобы понять, как работает метод no_commands
:
require 'thor'
class MyCLI < Thor
no_commands do
def internal_logic
# Internal logic that should not be exposed as a command
puts "This is internal logic."
end
end
def greet(name)
puts "Hello, #{name}!"
end
desc "say_hello NAME", "Greet someone"
def say_hello(name)
greet(name)
end
end
MyCLI.start(ARGV)
В приведенном выше примере мы определяем класс MyCLI
, который расширяет Thor
. Внутри блока no_commands
мы определяем метод internal_logic
, который не будет считаться командой. Это вспомогательный метод, который можно использовать внутри класса.
За пределами блока no_commands
мы определяем метод greet
, который представляет собой команду, которую можно выполнить из командной строки. Мы также определяем метод say_hello
, который вызывает метод greet
.
Когда мы запускаем этот CLI и выполняем команду say_hello
, он вызывает метод greet
и печатает приветственное сообщение. Однако если мы попытаемся выполнить метод internal_logic
как команду, он не сработает, поскольку он объявлен внутри блока no_commands
.
Использование метода no_commands
позволяет нам инкапсулировать внутреннюю логику внутри класса Thor, не раскрывая ее как команду. Это поможет сохранить чистоту интерфейса командной строки и сосредоточиться на реальных командах, с которыми взаимодействуют пользователи.
Метод в Ruby Thor: руководство по определению некомандных методов
метод, разработка Ruby