I'm glad you asked, and I would also like @zaphod42 to look at this.

The method in question (`#execpipe`) documents itself as "Execut[ing] the provided command with STDIN connected to a pipe, yielding the pipe object."  Since this exactly matched our use case, we attempted to use it for that purpose, and were somewhat surprised to learn that the pipe was not opened for writing.

Some quick Googling yielded [this page](http://devver.wordpress.com/2009/07/13/a-dozen-or-so-ways-to-start-sub-processes-in-ruby-part-2/), which pointed out that "[j]ust as with files, by default the IO object will be opened in read-only mode."

Passing the `'w+'` to the `open` call opens the pipe in read/write mode, to match the method's documentation.