我遇到了一个非常奇怪的问题。
我在Rails控制台的生产服务器中测试了一些数据库条目,其中几乎所有命令都产生了大量的o / p行,因此ssh通道被挂起:(
有没有办法抑制控制台/ irb屏幕?
由于
答案 0 :(得分:173)
你可以附加 ;没有 到你的所有命令/陈述。
示例:
users = User.all; nil
实际上,irb打印最后执行的语句的(返回)值。因此,在这种情况下,它将只打印nil,因为nil是最后执行的有效语句:)
答案 1 :(得分:29)
为了寻找如何使irb / console输出静音的解决方案,我还在austinruby.com找到了答案:
沉默irb:
conf.return_format = ""
默认输出:
conf.return_format = "=> %s\n"
限制为例如512个字符:
conf.return_format = "=> limited output\n %.512s\n"
答案 2 :(得分:9)
在此处,将此添加到〜/ .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
或者它,你就会回到以前的模式。
希望有用! :)
答案 3 :(得分:5)
此外,根据您的需要,请看一下使用quietly
或silence_stream
来抑制输出,而不仅仅是在irb / console中:
silence_stream(STDOUT) do
users = User.all
end
注意:{@ 1}}将在Ruby 2.2.0中弃用,最终将被删除。 (谢谢BenMorganIO!)
可以找到更多信息here。
答案 4 :(得分:3)
$ irb --simple-prompt --noecho
答案 5 :(得分:0)
在irb中运行以下内容对我有用:
irb_context.echo = false