Found an issue with open-uri because today Amazon’s API is wonky. The same issue will occur when accessing any remote data via open-uri (like a RSS feed) if the data source is going to slow. The relevant part of my ruby code looks like:
begin doc = Nokogiri(open(api_url)) rescue print "Connection failed: #{$!}\n" next end
For some reason, the rescue does not catch a timeout error.
/usr/lib64/ruby/1.8/timeout.rb:54:in `rbuf_fill': execution expired (Timeout::Error)
Explicitly catching the timeout error fixes the code.
begin doc = Nokogiri(open(api_url)) rescue Timeout::Error print "Timeout::Error: #{$!}\n" next rescue print "Connection failed: #{$!}\n" next end
Good to know, as you never know when your remote data provider will be slow.