Akata Works

東京エンジニア。主にRuby,Go,たまにAWSとiOS。ゲーム音楽が好きです。連絡はTwitterかakata.onen@gmail.comまで

Rails Console(irb)のアウトプット待ちがメンドイときに消す方法

小ネタです。Rails Console(irb)で適当な処理を実行すると返却値が出力されますよね?例えば以下のeachメソッドの返却値はレシーバ自身なので、eachブロックでゴニョゴニョ処理をするとレシーバが出力されます

> %w/hoge huga foo bar/.each{|e| e}
=> ["hoge", "huga", "foo", "bar"]

ちょっとした実行なら便利です


が、たまにステージングエリアのRails Consoleで大量のリソースをeachブロックで処理をする時とかに、これが少し邪魔になることになります

> Resource.where(statements).each{|record| record}
  Resource Load ...
=> [#<Resource id: 1, hoge: "aaaa", huga: "bbbb", foo: "cccc", bar: "dddd">, ...(以下略

返却値のActiveRecord::Relationオブジェクトが小さければいいですが、大きいと出力に時間がかかりますし、過去の情報が流れてしまいます

解決策

irbの出力は最後に実行された文の返却値みたいなので単純に; 0を追加すればかなりさっぱりします

> Resource.where(statements).each{|record| record}; 0
  Resource Load ...
=> 0

あースッキリした

参考URL