From: Robert Klemme Date: 2008-02-16T07:09:55+09:00 Subject: Re: closing files with abrupt interruptions On 15.02.2008 14:39, Daniel Brumbaugh Keeney wrote: > loop do > File.open somefile, 'r' do |io| > next > end > end > > Does somefile get closed? Yes. See also Peter's explanation. > How would I test that? Easily: robert@fussel ~ $ echo 1 > x irb(main):001:0> io = nil => nil irb(main):002:0> File.open("x") {|io| p io, io.closed?} # false => nil irb(main):003:0> p io, io.closed? # true => nil > I have the same question if it raises an error (that gets rescued) or > throws a symbol. irb(main):004:0> File.open("x") {|io| p io, io.closed?; raise "E"} # false RuntimeError: E from (irb):4 from (irb):4:in `open' from (irb):4 from :0 irb(main):005:0> p io, io.closed? # true => nil Cheers robert