【问题标题】:Trying to run pry command in custom pry command尝试在自定义 pry 命令中运行 pry 命令
【发布时间】: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 代码可以正常工作。)

标签: ruby pry


【解决方案1】:

您缺少运行其他pry 命令所需的run

Pry::Commands.block_command 'fifty', 'List the last fifty inputs' do |x|
  run 'hist --tail=50 -a'
end

【讨论】:

  • 这就像一个魅力!不知道我在设置它时是怎么错过的,但是 run 方法是我需要的秘诀。非常感谢你,你不知道这会在多大程度上提高我的工作效率。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多