0

Mechanize を使用して、いくつかの Web サイトをスパイダーしています。スパイダーをしている間、ページをファイルに保存し、後で Fakeweb でテストを行うために使用します。

私の Mechanize エージェントは次のように作成されます。

Mechanize.new do |a| 
  a.read_timeout = 20 # doesn't work with Fakeweb?
  a.max_history = 1 
end

実際のインターネット アクセスではなく、Fakeweb がファイルを取得できるようにアプリを実行すると、試行するすべての uri に対してログにこれらのメッセージがスローされます

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

上記のコードの 2 行目にコメントを付けると ( # a.read_timeout = 20 ...)、完全に機能します。全く問題無い。read_timout を有効にして Fakeweb を機能させる方法について何か考えはありますか?

ティア

4

1 に答える 1

5

モンキーへのパッチ適用はしばしば面倒ですが、ここでは合理的だと思います。

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

偽の世界ではタイムアウトはあまり意味がないので、タイムアウトを無視するのは理にかなっているように思えます。

作成者にプル リクエストを送信することを検討することもできます。

于 2011-08-21T09:57:08.330 に答える