8

可能重复:
Rails 控制台,如何停止输出返回值?

考虑 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_eachRuby 脚本,但我更感兴趣的是在交互式会话中这样做。

4

2 回答 2

27

只需添加nil到命令的末尾。它不会杀死 irb 的响应线,但如果你有一些大物体,它会避免炸毁你的屏幕。

1.9.3p194 :036 > for a in 1..5 do; puts a; end; nil
1
2
3
4
5
 => nil 
于 2012-07-23T21:50:04.867 回答
6

这是核心 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 
于 2012-07-23T21:50:53.417 回答