我正在使用机械化来抓取一些网站。在爬行时,我会将页面保存到文件中,以便稍后使用Fakeweb进行测试。
我的机械化代理是这样创建的:
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工作,你有什么想法吗?
提亚
发布于 2011-08-21 17:57:08
猴子补丁通常是一种杂乱无章的东西,但我认为它在这里是合理的:
module FakeWeb
class StubSocket
def read_timeout=(ignored)
end
end
end超时在虚拟世界中没有太多意义,因此忽略它们似乎是一件合理的事情。
您甚至可以考虑向作者发送pull request。
https://stackoverflow.com/questions/7137467
复制相似问题