【问题标题】:Hide the output of a command using Ruby 2.6使用 Ruby 2.6 隐藏命令的输出
【发布时间】: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”

标签: ruby irb ruby-2.6


【解决方案1】:

在 IRB 终端中运行以下命令。

irb_context.echo = false

【讨论】:

  • 这将适用于所有可能性
  • 不确定,但我认为会的。
  • 这不起作用?我已经编辑了我的问题,以举例说明在升级到 Ruby 2.6 之前 RUby 2.3 中发生的事情
猜你喜欢
  • 1970-01-01
  • 2015-05-14
  • 2018-10-13
  • 1970-01-01
  • 2012-06-04
  • 2013-08-06
  • 2016-09-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多