假設您正在使用剩餘客戶端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