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