ループの終わりにRailsコンソールがオブジェクトを印刷しないようにします


84

たとえば、特定のモデルのすべてのインスタンスをループしてそれぞれから何かを出力した場合、最後にirbはオブジェクト全体を出力します。

オブジェクトが数百行を占めることになった場合、実際に探していたものが表示されるまでにはかなりの時間がかかります。Railsコンソールでこれを無効にする方法はありますか?

回答:


109

一般にエコーを無効にしたくない場合は、1つのコマンドラインで複数の式を呼び出すこともできます。最後の式の出力のみが表示されます。

big_result(input); 0

3
これは実際に私が欲しかったものです。
dsp_099 2012年

3
私はよくしますbig_result(input); nil
nroose

101

を呼び出すconf.echo = falseと、戻り値は出力されません。これは、Railsコンソールだけでなく、すべてのirbセッションで機能します。

永続的にしたい場合は、irb設定に追加してください。

echo 'IRB.conf[:ECHO] = false' >> $HOME/.irbrc

これがデフォルトで常に当てはまるようにしたい場合はどうしますか?
ピーターバーグ2014年

@AccipheranRailsイニシャライザーに入れるとうまくいくと思います。
lulalala 2014年

応答をありがとう、私は実際IRB.conf[:ECHO] = falseに私の.irbrcファイルで行を投げるだけでそれを処理することがわかりました。もちろん、それは私のすべてのirbセッションでエコーのターンにもなりますが、私はそれで大丈夫です。
ピーターバーグ

40

コンソールによる戻り値の出力を一時的に停止するにnilは、ループまたは関数の最後で、戻り値を押す前にステートメントを発行できます。

record.each do |r|
  puts r.properties
end; nil

または、入力を減らしたい場合は、数字にすることもできます。しかし、それは私が考えることができないシナリオでは混乱する可能性があります。

record.each do |r|
  puts r.properties
end; 0

あなたは最高です!
sickrandir 2018
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.