我遇到了一个很奇怪的问题。
我在Rails Console的生产服务器中测试了一些数据库条目,其中几乎所有命令都导致大量的o / p行,由于ssh通道被挂起了:(
有没有办法抑制控制台/ irb的屏幕显示?
谢谢
Answers:
您可以追加;您的所有命令/语句都为零。
例:
users = User.all; nil
实际上,irb打印最后执行的语句的(返回)值。因此,在这种情况下,它将仅打印nil,因为nil是最后执行的有效语句:)
Users.all.count
,仅一行输出,如果您想将输出存储在变量中,可以这样进行users = User.all; Users.all.count
在寻找如何使irb / console输出静音的解决方案时,我还在austinruby.com上找到了答案:
沉默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
或退出,然后回到先前的模式。
希望对您有所帮助!:)
另外,根据您的需求,通常不仅仅在irb / console 中使用quietly
或silence_stream
抑制输出:
silence_stream(STDOUT) do
users = User.all
end
注意:quietly
在Ruby 2.2.0中将不推荐使用,并将最终将其删除。 (感谢BenMorganIO!)
在这里可以找到更多信息。
quietly
在ruby 2.2.0 中已弃用,并且将要删除它。
users = User.all; 0