2011-08-21 10 views
0

Mechanize를 사용하여 일부 웹 사이트를 거미합니다. 스파이더 링하는 동안 나중에 Fakeweb에서 테스트를 위해 사용하는 파일에 페이지를 저장합니다.ruby ​​Mechanize 에이전트의 read_timeout =이 호출되면 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> 
을하려고 모든 URI에 대한 이러한 메시지를 던졌습니다

위의 코드 (# a.read_timeout = 20 ...)의 두 번째 줄에 주석을 달면 완벽하게 작동합니다. 전혀 문제 없습니다. read_timout을 활성화하고 Fakeweb을 작동시키는 방법에 대한 아이디어가 있습니까?

TIA

답변

5

원숭이 패치는 종종 kludge하지만 나는 여기에 합리적인 생각 :

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

시간 제한 때문에 그들에 대한 합리적인 것처럼 보인다 무시 가짜 세계에서 많은 의미가 없습니다 해야 할 것.

pull request을 작성자에게 보내는 것이 좋습니다.

+0

그것은 매력처럼 작동합니다. Thx –

+1

이 풀 요청은 https://github.com/chrisk/fakeweb/pull/38 문제를 해결합니다. – Shevaun

관련 문제