ぼろぼろ平原

困った

Rubyで大きいファイルを読み込む時に進捗を表示

f:id:tatzyr:20160713144219g:plain

ruby-progressbar というgemを使うとプログレスバーを表示できる。

ruby-progressbarのインストール

$ gem install ruby-progressbar

進捗を表示しつつファイルを読むプログラム

require "ruby-progressbar"

# ファイル名
filename = "sugoku_dekai_file.txt"

# ファイルサイズを取得しプログレスバーを作成
progressbar = ProgressBar.create(total: FileTest.size(filename))

# ファイルを開いて行ごとに処理
open(filename) do |f|
  f.each_line do |line|
    # lineに対してなにか処理
    foo(line)

    # プログレスバーを更新
    progressbar.progress = f.pos
  end
end

# 最後にプログレスバーを100%にする
progressbar.finish