假设您正在使用剩余客户端gem,RestClient
不会在失败的请求上返回nil
。例如:
require 'rest_client'
puts RestClient.get "http://invalidurl.foo/somepath"
从我的供应商(不nil
)产生一个错误页:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
<html>
<head>
<title>T-Online Navigationshilfe</title>
</head>
<frameset rows="100%">
<frame src="http://navigationshilfe.t-online.de/dnserror?url=http://invalidurl.foo/"
frameborder="0" noresize="noresize"/>
<noframes>
<body>
<h1>Willkommen bei T-Online</h1>
<p>
<a href="http://navigationshilfe.t-online.de/dnserror?url=http://invalidurl.foo/">
weiter....</a>
</p>
</body>
</noframes>
</frameset>
</html>
没有这个代码产生的错误信息的互联网连接:
http.rb:762:in `initialize': getaddrinfo: nodename nor servname provided, or not known (SocketError)
这意味着,你的until
- 块总是只执行一次,因为RestClient#get
总是有返回值或抛出错误。为了帮助你,我需要了解你想要完成的更多细节。
轮询不是异步的想法... – Reactormonk 2012-03-27 11:40:55
为什么'直到!'而不是'while'? – 2012-03-27 11:48:38
@MichaelKohl @MichaelKohl我一定是一个悲观主义者:)同样的结果,尽管'while虽然.. @塔斯同意,最终将重构这与通知 – Kevsy 2012-03-27 13:34:49