我正在使用Mechanize来抓取一些网站。在抓取时,我将页面保存到我稍后使用Fakeweb进行测试的文件中。
My Mechanize代理以这种方式创建:
Mechanize.new do |a|
a.read_timeout = 20 # doesn't work with Fakeweb?
a.max_history = 1
end
当我运行我的应用程序启用Fakeweb来获取文件而不是实际的Internet访问时,我的日志会为我尝试的每个uri抛出这些消息
W, [2011-08-20T18:49:45.764749 #14526] WARN -- : undefined method `read_timeout=' for #<FakeWeb::StubSocket:0xb72c150c>
如果我在上面的代码(# a.read_timeout = 20 ...
)中注释第二行,它就可以完美地运行。没问题。关于如何启用read_timout并让Fakeweb工作的任何想法?
TIA
答案 0 :(得分:5)
猴子修补通常是一个障碍,但我认为这是合理的:
module FakeWeb
class StubSocket
def read_timeout=(ignored)
end
end
end
超时在虚假世界中没有多大意义,所以忽略它们似乎是一件合理的事情。
您甚至可以考虑向作者发送pull request。