Rubyで外部コマンドの出力をGtk::TextViewに表示

外部コマンドの出力をパイプで取得してそのままGTKのテキストビューに表示するプログラムを書いてみました。
単純な方法でやっているので、ただ単に標準出力を表示するだけですが、
リアルタイムに出力を取得しているので、少しずつ出力されるコマンドは少しずつ表示されるようになっています。
ruby -v」を実行して、結果(Rubyのバージョン)を表示するコードを書いておきます。
IO.popenでパイプで接続してコマンドを実行し、それからeachで一行ずつ読み出して追加しています。
すぐに終わるコマンドではあまり関係ないかもしれませんが、すぐには終わらないコマンドで、一行ではなく一文字ずつ出力されるコマンドでは修正する必要があるかもしれません。

require 'gtk2'

Gdk::Threads.init
Gtk.init

window = Gtk::Window.new
window.set_size_request(320, 240)

buffer = Gtk::TextBuffer.new
view = Gtk::TextView.new(buffer)

window.add(view)
window.show_all

thread = Thread.start {
  IO.popen("ruby -v") { |pipe|
    pipe.each { |line|
      buffer.insert_at_cursor(line)
    }
  }
  buffer.insert_at_cursor("プロセスが終了しました")
}

window.signal_connect("delete_event") {
  thread.kill
  Gtk.main_quit
}

Gtk.main
thread.join