the example works both on Debian, Ruby 1.8.4 and Gentoo, Ruby 1.8.5
irb(main):006:0> require ‘open-uri’
irb(main):010:1> puts ‘timeout’
rbuf_fill': execution expired (Timeout::Error) from /usr/lib/ruby/1.8/timeout.rb:56:intimeout’
timeout' from /usr/lib/ruby/1.8/net/protocol.rb:132:inrbuf_fill’
readuntil' from /usr/lib/ruby/1.8/net/protocol.rb:126:inreadline’
read_chunked' from /usr/lib/ruby/1.8/net/http.rb:2204:inread_body_0’
read_body' ... 13 levels... from /usr/lib/ruby/1.8/open-uri.rb:30:inopen’
irb_binding' from /usr/lib/ruby/1.8/irb/workspace.rb:52:inirb_binding’
I think it’s terrible bad. Rescue without explicit error type should
have deal with every error. Its purpose is to handle unexpected
errors. My production application stopped working by a bad url, but the
whole process was inside a begin-rescue-end block.
This is not the first time. I have seen same when I was dealing with
SCGI source code.
Correct me if I am wrong but I think this is a serious issue in Ruby’s
error handling and should be fixed soon.