如何捕获pry shell命令的输出?

7

我是一名使用Pry的IT技术人员,我想要捕获并处理shell命令的输出。

举个例子,如果我运行以下命令:

pry(main)> .ls

我想将文件列表存储到一个数组中,以便在Ruby中进行操作。
我该怎么做?
2个回答

5

这是一个比较老的问题,但我还是会回答它。有两种主要方法可以从pry命令中获取数据。第一种是如果命令将keep_retval选项设置为true,而shell命令则不会。第二种方法是使用虚拟管道。在您的示例中,可以这样做:

fizz = []
.ls | {|listing| fizz = listing.split("\n")} # can also be written as
.ls do |listing|
  fizz = listing.split("\n")
end

3

我猜这是pry的一种魔法;-)

快速查看发生了什么(我没有查看pry的源代码),您可能想使用以下内容:

`ls`.split("\n")

或者

Dir['./*']

这个解决方案的好处在于它能够在pry之外运行。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接