Hans Fugal wrote: > > require 'yaml' > YAML.load(ARGF) > > ... waits for ^D from the terminal, and then tries to parse the YAML > and go on with life. Try: require 'yaml' until ARGF.closed? YAML::load( ARGF.file ) ARGF.close end Like Robert said, ARGF isn't an IO object. If you run ARGF.to_io, you'll only get the first stream. ARGF is a set of streams. The question is: does each supplied stream separately contain a YAML document? Or do the streams represent chunks of a partitioned YAML document? Your example seems to indicate the second. But I would have found the first more natural. #1. YAML::load( ARGF.read ) #2. ARGF.collect { |doc| YAML::load( doc ) } Which is desired? _why