Я пытаюсь немного настроить свой Pry (использую Pry некоторое время, но это первый раз, когда я пытаюсь создать команду). Я хочу создать пользовательскую команду, которая будет получать последние пятьдесят элементов из моей истории. и я строю это так:
Pry::Commands.block_command "fifty", "List the last fifty inputs" do
hist --tail=50 -a
end
Как только это будет в моем файле .pryrc, оно показывает, делаю ли я «помощь пятьдесят», но если я пытаюсь запустить команду, я получаю следующее:
NameError: undefined local variable or method `a' for #<#<Class:0x007f8a1ee49aa8>:0x007f8a1e873ed0>
Я предполагаю, что есть некоторая проблема с областью действия команды в блоке выполнения, но мой поиск документации Pry не дал мне никаких идей о том, как действовать дальше. Другие команды, которые не пытаются копировать команды Pry cl, такие как в примере
Pry::Commands.block_command "hello", "Say hello to three people" do |x, y, z|
output.puts "hello there #{x}, #{y}, and #{z}!"
end
работать просто отлично. Любой вклад приветствуется.
hist --tail=50 -a
для меня не похоже на код ruby, вы пытаетесь выполнить внешнюю команду, как если бы ruby был языком сценариев оболочки? Если это так, вам нужно использовать операторы обратной кавычки или что-то вродеsystem
. Если это команда, которую понимает сам pry, то вам, вероятно, нужно вызвать какой-нибудь Pry API и передать команду в виде строки. - person SirDarius   schedule 02.10.2018