私はかなり奇妙な問題に悩まされています。
Rails Consoleの本番サーバーのいくつかのdbエントリをテストしていましたが、sshチャネルがハングしていたため、ほとんどすべてのコマンドが膨大な数のo / p行を生成していました:(
コンソール/ IRB画面一式を抑制する方法はありますか?
ありがとう
回答:
追加できます。すべてのコマンド/ステートメントにnil。
例:
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では非推奨であり、削除されることに注意してください。
irb --simple-prompt --noecho
--simple-prompt
-単純なプロンプトを使用する-ちょうど >>
--noecho
-操作の結果を抑制します
users = User.all; 0