0

我正在使用 Mechanize 来抓取一些网站。在爬取时,我将页面保存到稍后与 Fakeweb 一起使用的文件中进行测试。

我的 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

4

1 回答 1

5

猴子补丁通常是一个杂物,但我认为这里是合理的:

module FakeWeb
  class StubSocket
    def read_timeout=(ignored)
    end
  end
end

超时在虚假世界中没有多大意义,因此忽略它们似乎是合理的做法。

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

于 2011-08-21T09:57:08.330 回答