抑制IRB输出?

时间:2012-07-23 21:46:40

标签: ruby-on-rails ruby irb

  

可能重复:
  Rails console, how to stop output of return value?

在IRB中考虑此会话:

>> for a in 1..5 do
?>     puts a
>> end
1
2
3
4
5
=> 1..5
>> 

如何抑制输出=> 1..5?如果我在Rails控制台会话中执行此操作,这很重要:

for post in Post.find(:all) do
    if post.submit_time > Time.now
        puts "Corrupted post #{post.id} is from the future"
    end
end

我不希望所有的帖子最后都作为一个数组打印出来。如何抑制输出?

我确信还有其他方法可以做到这一点,比如find_each或Ruby脚本,但我更感兴趣的是在交互式会话中这样做。

2 个答案:

答案 0 :(得分:21)

只需将nil添加到命令的末尾即可。它不会杀死irb的响应行,但如果你有一些大的物体,它可以避免爆破你的屏幕。

1.9.3p194 :036 > for a in 1..5 do; puts a; end; nil
1
2
3
4
5
 => nil 

答案 1 :(得分:5)

这是核心IRB功能。键入表达式,它会打印其值。在这种情况下,值为1..5。其他输出只是副作用。

但是,您可以“最小化”返回(和打印)的值。因此,您可以返回一些较小的东西,而不是大量的脂肪AR模型。

尝试这样的事情:

% irb
1.9.3p194 :001 > for a in 1..5 do
1.9.3p194 :002 >     puts a
1.9.3p194 :003?>   end; nil
1
2
3
4
5
 => nil