如何限制Ruby`pp`调用的输出?

时间:2012-04-05 14:49:43

标签: ruby

我有一个递归对象(Cucumber :: Rails :: World.scenario),我想检查它(为了找到属于当前场景的标签)。 scenario.inspect永远不会完成,pp scenario打印得如此之快,以至于即使使用快速系列的 Ctrl - c ,它也会填充大约三千行。如何限制输出?

2 个答案:

答案 0 :(得分:3)

使用pretty_inspect将其作为字符串,然后只获取前n个字符:

pp_output = scenario.pretty_inspect; nil
puts pp_output[0..n]; nil

请注意,尾随nil会导致IRb显示返回值nil而不是整个对象,从而大幅清除输出。

为了获得更大的灵活性,请将其保存到文件中:

File.open "pp-output.txt", "w" do |f|
  f.puts scenario.pretty_inspect
end

然后在您选择的寻呼机中查看:

$ less pp-output.txt

答案 1 :(得分:0)

在某些点(gets的小块之间)插入pp。然后,您可以通过在每个块之后输入输入来慢慢浏览它们。