如何在Ruby中访问方法的标准输出和标准错误?

时间:2014-12-18 06:26:49

标签: ruby io pry

我有一个方法可以将输入和输出文本输出到控制台。

更具体地说,我的代码与此类似:

require 'pry'

p = Pry.new
p.eval("some Ruby code in string form to be evaluated that prints to the console")

我正在尝试捕获此输出。如果我将eval行分配给变量,它就会以true的形式返回,无论如何,它会将对代码的相应评估响应打印到我的控制台。

我看过并尝试过我在SO上找到的几种方法,其中一些使用Open3,一些使用STDOUT$stdout。每次我尝试的东西都会出现Errno错误或IO错误,并且我一直在尽可能地遵循文档。不知道在哪里转。我也是IO概念的新手,一直没有帮助。

1 个答案:

答案 0 :(得分:1)

试试这个

require 'stringio'

$stdout = StringIO.new

eval 'Some code here bla bla bla'

output = $stdout.string
$stdout = STDOUT

# `output` is now the stdout of the command