rails consoleやirbで必要のない返り値の出力を避けてコマンドの実行時間を速くする方法

rails consoleやirbは、以下のように入力したコマンドの返り値を出力する。

irb(main):001:0> 1 + 1
=> 2

しかし、処理内容によっては返り値の出力が不要な場合がある。

irb(main):001:0> array =  [1, 2, 3]
irb(main):002:0> array.each {|x| puts x + 1}
2
3
4
=> [1, 2, 3]
# 見たいのはputsの値なので、[1, 2, 3]はいらない

配列の中身がこれぐらいならさして問題ないが、例えばactive recordの検索結果のように要素がたくさんあるような場合には、返り値の出力が終わるまで長々と待たされることもある。

このような場合には、ステートメントの最後にnilを返すと、出力がnilだけになり出力待ち時間がほぼ無くなる。

irb(main):003:0> array.each {|x| puts x + 1}; nil
2
3
4
=> nil

また、複数の処理を行い、かつ、途中の出力結果が入らない場合には、「複数の処理を返り値がnilのメソッド化して呼び出す」という手もある。

irb(main):003:0> def hoge
irb(main):004:1> array = [1,2,3]
irb(main):005:1> array.each {|x| puts x + 1}
irb(main):006:1> array.each {|x| puts x + 2}
irb(main):007:1> nil
irb(main):008:1> end
=> :hoge
irb(main):009:0> hoge
2
3
4
3
4
5
=> nil

コメント