Ruby:Net::HTTP.start问题

Ruby:Net::HTTP.start问题,ruby,http,networking,net-library,Ruby,Http,Networking,Net Library,我得到了以下代码(大致): 当我针对浏览器中超时的url执行代码时,它永远不会进入块中。任何其他情况下,它都能完美工作。start方法上是否有我看不到的行为?我假设在http.get(parsed_url.path)语句之前根本不会打开连接,所以我不明白为什么这段代码没有执行 提前感谢…Net:HTTP.start调用do\u start,然后调用connect(两者都是私有方法): 前3行是 D "opening connection to #{conn_address()}..." s =

我得到了以下代码(大致):

当我针对浏览器中超时的url执行代码时,它永远不会进入块中。任何其他情况下,它都能完美工作。start方法上是否有我看不到的行为?我假设在http.get(parsed_url.path)语句之前根本不会打开连接,所以我不明白为什么这段代码没有执行


提前感谢…

Net:HTTP.start
调用
do\u start
,然后调用
connect
(两者都是私有方法):

前3行是

D "opening connection to #{conn_address()}..."
s = timeout(@open_timeout) { TCPSocket.open(conn_address(), conn_port()) }
D "opened"
虽然我似乎找不到超时方法的文档,但这可能是您的罪魁祸首。

读取的文档

打开TCP连接和HTTP会话


因此,当您调用
Net::HTTP.start
时,会建立连接,如果您无法访问给定的URL,则会在
start
方法中抛出一个
Timeout::Error
,并且块中的代码确实从未执行过。

您是否在虚拟机中运行?什么站台?我是!通过win7 64位主机上的VirtualBox的Ubuntu客户端
D "opening connection to #{conn_address()}..."
s = timeout(@open_timeout) { TCPSocket.open(conn_address(), conn_port()) }
D "opened"