如果调用Mechanize代理程序的read_timeout =,则返回ruby Fakeweb错误

mar*_*ana 0 ruby mechanize fakeweb

我正在使用Mechanize来抓取一些网站.虽然我将页面保存到我稍后使用Fakeweb进行测试的文件中.

我的Mechanize代理以这种方式创建:

Mechanize.new do |a| 
  a.read_timeout = 20 # doesn't work with Fakeweb?
  a.max_history = 1 
end
Run Code Online (Sandbox Code Playgroud)

当我运行我的应用程序启用Fakeweb来获取文件而不是实际的Internet访问时,我的日志会为我尝试的每个uri抛出这些消息

W, [2011-08-20T18:49:45.764749 #14526]  WARN -- : undefined method `read_timeout=' for #<FakeWeb::StubSocket:0xb72c150c>
Run Code Online (Sandbox Code Playgroud)

如果我在上面的代码(# a.read_timeout = 20 ...)中注释第二行,它就完美无缺.没问题.有关如何启用read_timout并使Fakeweb工作的任何想法?

TIA

mu *_*ort 5

猴子修补通常是一个kludge,但我认为这是合理的:

module FakeWeb
  class StubSocket
    def read_timeout=(ignored)
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

超时在虚假世界中没有多大意义,所以忽略它们似乎是一件合理的事情.

您甚至可以考虑向作者发送拉取请求.