【发布时间】:2018-10-02 15:47:58
【问题描述】:
我正在尝试对我的 Pry 进行一些自定义(使用 Pry 有一段时间了,但这是我第一次尝试创建命令。)我想创建一个自定义命令来获取最后 50 个项目根据我的历史,我正在构建它:
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 是 shell 脚本语言一样执行外部命令?如果是这种情况,您需要使用反引号运算符,或类似system的东西。如果这是 pry 本身理解的命令,那么您可能需要调用一些 Pry API 并将命令作为字符串传递。 -
你说得对,它不是 Ruby 代码,Pry REPL 有它自己的脚本语言,这就是它。在将这些脚本放入命令块时,管理此问题的文档并不十分清楚(实际的 Ruby 代码可以正常工作。)