【发布时间】:2019-08-28 12:34:47
【问题描述】:
我不确定这是 Ruby 2.6 的错误还是新功能,但是自从执行升级 2.3 --> 2.6 后,我的 IRB 终端不再像往常一样运行并且无法再隐藏输出。以前我输入分号时,它会等到收到没有分号的下一条指令才能运行所有代码并用分号隐藏值
2.6.3 :008 > 1 + 1
=> 2
2.6.3 :009 > 1 + 1;
=> 2
2.6.3 :010 > (1 + 1);
=> 2
2.6.3 :011 > very_large_inspect_result;
=> [console keeps printing for ages)
使用 ruby-2.6.3 [ x86_64 ] 和来自 rails-5.1.6 的 IRB 终端
如何隐藏命令的输出?目标是在返回非常大的集合时避免打印大量 inspect 字符串
编辑:我可以在分号后系统地添加一个 0 或其他东西,但感觉很便宜
2.6.3 :010 > (1 + 1); 0
=> 0
EDIT2:Ruby 2.3.x 之前发生的事情:
irb(main):001:0> puts 1;
irb(main):002:0* puts 2;
irb(main):003:0* puts 3
1
2
3
=> nil
【问题讨论】:
-
Pry 在添加
;时会抑制输出,并且通常会在irb上提供一些不错的添加。 -
你也可以这样做
out = $stdout and $stdout = File.open(File::NULL,'w'),然后当你完成后设置$stdout = out来重置输出流。这本质上就像管道到“/dev/null”