私はかなり奇妙な問題に悩まされています。
本番サーバーで、Rails Consoleでいくつかのdbエントリをテストしました。ほとんどすべてのコマンドは、sshチャネルがハングアップしていたために、膨大な数のo/p行を生成していました。
コンソール/ irbのスクリーンフルを抑制する方法はありますか?
ありがとう
すべてのコマンド/ステートメントに; nilを追加できます。
例:
users = User.all; nil
実際には、irbは最後に実行されたステートメントの(戻り)値を出力します。したがって、この場合、nilは最後に実行された有効なステートメントであるため、nilのみを出力します:)
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
outまたはそれだけで、前のモードに戻ります。
お役に立てば幸いです! :)
また、ニーズに応じて、quietly
またはsilence_stream
irb/consoleだけでなく、一般的な出力を抑制するため:
silence_stream(STDOUT) do
users = User.all
end
注:quietly
は、Ruby 2.2.0で廃止され、最終的には削除されます。(ありがとう BenMorganIO !)
詳細情報を見つけることができます ここ 。
$ irb --simple-Prompt --noecho
irb内で次のコマンドを実行するとうまくいきます。
irb_context.echo = false