open-uriでtimeout error

参考:http://d.hatena.ne.jp/hiru926/20090130/1234313944

open-uriでwebページを開こうとしてタイムアウトになる

/usr/lib/ruby/1.8/timeout.rb:60:in `rbuf_fill': execution expired (Timeout::Error)

rescueでクラス名を指定せずに捕捉できるのはStandardErrorのサブクラスのみで、Timeout::ErrorはStandardErrorのサブクラスではないらしい


こうする

require 'rubygems'
require 'open-uri'

begin
  # 何か処理
  open('http://shokai.org')
rescue => e
  STDERR.puts e
rescue Timeout::Error => e
  STDERR.puts e
end