From: Dave Burt Date: 2006-06-07T15:21:09+09:00 Subject: Re: What's going on here? (Newbie question) Logan Capaldo wrote: > I wonder if IO#each should be changed to automatically #rewind at the > beginning of #each (if possible). I have difficulty imagining a > situation where someone would purposely do > a = file.gets > file.each { ... } > > But I can certainly imagine people iterating over a file multiple > times. OTOH this may be too magical. Too magical. Streams are often one-way. If you need to read the same data from the same stream more than once, usually the appropriate method is to store the data in a variable to avoid that. Instead of: f.each {|s| foo } f.reset f.each {|s| bar } This may often work better: data = f.read data.each {|s| foo } data.each {|s| bar } Cheers, Dave