抑制IRB输出?

hig*_*dth 7 ruby ruby-on-rails irb

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

在IRB中考虑此会话:

>> for a in 1..5 do
?>     puts a
>> end
1
2
3
4
5
=> 1..5
>> 
Run Code Online (Sandbox Code Playgroud)

如何抑制输出=> 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
Run Code Online (Sandbox Code Playgroud)

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

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

Kri*_*ján 24

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

1.9.3p194 :036 > for a in 1..5 do; puts a; end; nil
1
2
3
4
5
 => nil 
Run Code Online (Sandbox Code Playgroud)


Ser*_*sev 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 
Run Code Online (Sandbox Code Playgroud)