【问题标题】:ruby Fakeweb error if a Mechanize agent's read_timeout= is called如果调用 Mechanize 代理的 read_timeout=,则出现 ruby​​ Fakeweb 错误
【发布时间】:2011-08-21 09:34:04
【问题描述】:

我正在使用 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

【问题讨论】:

    标签: ruby mechanize fakeweb


    【解决方案1】:

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

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

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

    您甚至可以考虑向作者发送pull request

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-26
      • 1970-01-01
      • 2015-09-14
      • 1970-01-01
      • 2013-02-15
      • 1970-01-01
      • 1970-01-01
      • 2016-11-05
      相关资源
      最近更新 更多