如何抑制Rails控制台/ irb输出

我陷入了一个很奇怪的问题。

我在我们的生产服务器在Rails控制台几乎所有的命令产生了大量的o / p线,因此ssh通道被绞死:(

有没有办法抑制控制台/ irb screenfuls?

谢谢

你可以追加; 所有你的命令/陈述。

例:

users = User.all; nil 

其实irb打印最后执行语句的(返回)值。 因此,在这种情况下,它只会打印为零,因为零是最后执行的有效声明:)

在寻找一个解决scheme如何沉默的irb /控制台输出,我也在austinruby.comfind答案:

沉默irb:

 conf.return_format = "" 

默认输出:

 conf.return_format = "=> %s\n" 

限制为例如512个字符:

 conf.return_format = "=> limited output\n %.512s\n" 

在这里,添加到你的〜/ .irbrc:

 require 'ctx' require 'awesome_print' module IRB class Irb ctx :ap do def output_value() ap(@context.last_value) end end ctx :puts do def output_value() puts(@context.last_value) end end ctx :p do def output_value() p(@context.last_value) end end ctx :quiet do def output_value() end end end end def irb_mode(mode) ctx(mode) { irb } end 

(注意:您必须首先安装ctx gem,当然, awesome_print是可选的。)

现在,当您在任何使用irb的控制台上时,您可以执行以下操作:

正常模式:

 irb(main):001:0> { this:'is a complex object', that:[ { will:'probably'}, { be:'good to read' } ], in:{ some:{ formatted:'way'} } } => {:this=>"is a complex object", :that=>[{:will=>"probably"}, {:be=>"good to read"}], :in=>{:some=>{:formatted=>"way"}}} 

…是的,只是你的期望。

awesome_print模式:

 irb(main):002:0> irb_mode(:ap) irb#1(main):001:0> { this:'is a complex object', that:[ { will:'probably'}, { be:'good to read' } ], in:{ some:{ formatted:'way'} } } => { :this => "is a complex object", :that => [ [0] { :will => "probably" }, [1] { :be => "good to read" } ], :in => { :some => { :formatted => "way" } } } 

哇,现在一切都打印出来真棒! 🙂

静音模式:

 irb#1(main):002:0> irb_mode(:quiet) irb#1(main):001:0> { this:'is a complex object', that:[ { will:'probably'}, { be:'good to read' } ], in:{ some:{ formatted:'way'} } } irb#1(main):002:0> 

哇,没有输出? 尼斯。

无论如何,你可以添加任何你喜欢的模式,当你完成了这个模式, exit或者exit ,你将回到以前的模式。

希望有帮助! 🙂

超压输出,一般

另外,根据你的需要,看看quietly使用或者silence_stream来抑制输出,而不仅仅是在irb / console中:

 silence_stream(STDOUT) do users = User.all end 

注意: quietly将在Ruby 2.2.0中被弃用,并最终被删除。 (感谢BenMorganIO !)

更多信息可以在这里find。

$ irb –simple-prompt –noecho