如何抑制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