我一直在努力,现在用的ActiveResource的问题了一下:当一个主机名解析为的ActiveResource请求,但没有服务器上的另一端返回的信息,的ActiveResource的超时值不起作用。 请求只是挂起。
审查的ActiveResource代码后,我意识到,这是因为底层网:HTTP对象只有一个超时值设置:read_timeout。 净:HTTP库这个定义为“秒等待,直到读出一个块(由一个读(2)呼叫)”。 净是:http LIB还定义了另一个超时值,open_timeout,其被定义为“秒等待连接被打开,直到”。
我不确定为什么open_timeout默认情况下不与一个类的ActiveResource设定的超时值设置,但修改的ActiveResource :: Connection类包含在HTTP对象open_timeout后,我的问题就解决了!
我是新的轨道,因此我不确定真正让我在这个项目变更的最佳方式; 我不想只是改变我的宝石目录中的代码。 有没有办法让在Rails项目这些修改之有道? 我已经看到了它可能加载从/供应商的文件夹轨类,但是他们都必须有它的工作? 我开始做的ActiveResource :: Base和的ActiveResource ::连接类的子类,但它似乎像也许有这样做的更简单的方法,作为创建网络的功能是:http实例是私人...有什么想法?