ruby Ошибка Fakeweb, если вызывается read_timeout = агента Mechanize - PullRequest
0 голосов
/ 21 августа 2011

Я использую Mechanize для пауков на некоторых сайтах. Во время паутинга я сохраняю страницы в файлы, которые позже использую с Fakeweb для проведения тестов.

Мой Механизирующий агент создается следующим образом:

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

Когда я запускаю свое приложение, позволяющее Fakeweb получать файлы вместо реального доступа в Интернет, мой журнал выдает эти сообщения для каждого пользователя, которого я пытаюсь

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

Если я прокомментирую вторую строку в приведенном выше коде (# a.read_timeout = 20 ...), она отлично работает. Совершенно никаких проблем. Есть идеи, как включить read_timout и заставить работать Fakeweb?

1012 * ТИА *

1 Ответ

5 голосов
/ 21 августа 2011

Исправление обезьяны - часто клочок, но я думаю, что здесь разумно:

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

Тайм-ауты не имеют большого значения в фальшивом мире, поэтому их игнорирование кажется разумным.

Вы могли бы даже рассмотреть возможность отправки запроса на получение автору.

...