リモートエラーがない限り、現在のコードは機能します。
def get_name_from_remote_url
cstr = "http://someurl.com"
getresult = open(cstr, "UserAgent" => "Ruby-OpenURI").read
doc = Nokogiri::XML(getresult)
my_data = doc.xpath("/session/name").text
# => 'Fred' or 'Sam' etc
return my_data
end
しかし、リモートURLがタイムアウトしたり、何も返さなかったりした場合はどうなりますか?たとえば、それを検出してnilを返すにはどうすればよいですか?
そして、Open-URIは、あきらめるまでの待機時間を定義する方法を提供しますか?このメソッドは、ユーザーが応答を待っている間に呼び出されるので、あきらめて「アクセスしようとしたリモートサーバーが現在利用できません」とユーザーに伝える前に、最大タイムアウト時間を設定するにはどうすればよいですか。