Ruby でシェルのコマンドを実行する際にダラダラ流れる標準出力をリアルタイムで見る

結論

Open3.popen3 を用いる。

具体例

以下の例で、Rails(の gem)をインストール際の標準出力がガーッと流れるように表示されます。

require 'open3'

Open3.popen3('gem install rails') do |i, o, e, w|
  o.each { |line| puts line }
end

その他の方法、例えばバッククォートでくくって実行する方法ですと、全ての処理が終わってから一気に出力されます*1

参考

*1:リアルタイムでない

Powered by はてなブログ