Ruby 1.9.2 リファレンスマニュアル > ライブラリ一覧 > 組み込みライブラリ > ARGFオブジェクト
クラスの継承リスト: ARGF
スクリプトに指定した引数 (Object::ARGV を参照) をファイル名とみなして、 それらのファイルを連結した 1 つの仮想ファイルを表すオブジェクトです。 ARGV が空なら標準入力を対象とします。 ARGV を変更すればこのオブジェクトの動作に影響します。
while line = ARGF.gets .... end
は、
while argv = ARGV.shift
  File.open(argv) {|file|
    while line = file.gets
      ....
    end
  }
end
のように動作します。
ARGF を処理するごとに ARGV の要素は一つずつ取り除かれます。 最後まで ARGF を読み込んだ後、再度 ARGF から内容を読むと (ARGV が空なので)標準入力からの読み込みとなります。
ARGV.replace %w(/tmp/foo /tmp/bar)
ARGF.each {|line|
    # 処理中の ARGV の内容を表示
    p [ARGF.filename, ARGV]
    ARGF.skip
}
    # => ["/tmp/foo", ["/tmp/bar"]]
    #    ["/tmp/bar", []]
# 最後まで読んだ後 (ARGV が空) の動作
p ARGF.gets      # => nil
p ARGF.filename  # => "-"
Kernel.#gets など一部の組み込み関数は ARGF.gets などこのオブジェクトをレシーバとしたメソッドの省略形です。
また、ARGF は ARGF.class クラスのインスタンスです。 各メソッドの詳細は ARGF.class を参照してください。