2012-12-02 7 views
8

Mam bardzo proste module Testuję z Ruby przy użyciu klejnotu VCR.Magnetowid nie nagrywa kaset

Skonfigurowałem magnetowid zgodnie z dokumentacją, ale nie mogę uzyskać kasety do zapisania w katalogu kasety. Na wszelki wypadek zmieniłem nawet uprawnienia do katalogu na kasety na 777. Naprawdę dziwne jest to, że całkowicie usunąłem katalog kaset, uruchom specyfikacje, a następnie utworzy się nowy katalog kaset.

Używam Typhoeus 0.4.2 z Hydra. Nie mogę uaktualnić Typhoeusa w tej chwili.

Odpowiedni kod:

require 'rspec'                  
require 'vcr'                  
require_relative File.join("..", "crawl_handler")         

VCR.configure do |c|                 
    c.cassette_library_dir = "spec/vcr_cassettes"          
    c.hook_into :fakeweb                
    c.allow_http_connections_when_no_cassette = false         
end 

... # => other describe statements 
describe "#handle_http_response" do            
    before(:each) do                 
     get_some_response = lambda {             
     # NOTE: typhoeus v. 0.5 is MUCH less setup :)        
     VCR.use_cassette("bme") do             
      request = Typhoeus::Request.new("www.bing.com")       
      hydra = Typhoeus::Hydra.new            
      hydra.queue(request)              
      hydra.run                 
      response = request.response            
     end                   
     }                    
     @message = @subject.handle_http_response("www.bing.com", get_some_response.call)  
    end                    

    it "returns a message hash" do             
     @message.should be_kind_of Hash            
    end 

    ... 

nie mam pojęcia dlaczego kasety nie są zapisywane.

+2

+1 za tytuł. Zamierzałem zaklasyfikować jako wyłączony temat i zalecić wyczyszczenie głowic rekordów (lub uaktualnienie do Blu-Ray), ale myślę, że mówisz o kodzie Ruby :) –

+0

LOL! Byłem tak pochłonięty próbą rozwiązania problemu, że nawet tego nie zauważyłem. W przypadku tego problemu, po prostu dmuchnąłem na taśmę, odłączyłem ją i włączyłem z powrotem. – brycemcd

Odpowiedz

9

Problem polega na tym, że używasz Typhoeus jako klienta HTTP, ale podłączasz się do FakeWeb, który zapewnia tylko obsługę Net::HTTP. Magnetowid może zaczepić się bezpośrednio do Typhoeus (ponieważ zapewnia dobre API publicznych za to), jeśli go skonfigurować:

VCR.configure do |vcr| 
    vcr.hook_into :typhoeus 
end 

listy hook_into docs wszystkie opcje i która zahacza pracę z których HTTP klientów. Jeśli masz jakieś sugestie dotyczące udoskonalenia dokumentacji, aby zapobiec występowaniu tego zamieszania przez inne osoby, daj mi znać.

+0

AH, to sprawia, że ​​masz dużo sensu. Z jakiegoś powodu "hook_into" sugerowało, że magnetowid wymagałby i korzystał z udogodnień: webmock (lub: fakeweb lub cokolwiek innego) niezależnie od tego, który klient HTTP był używany poza specyfikacją. W każdym razie, stworzyłem żądanie ściągnięcia na https://github.com/vcr/vcr/pull/228 jako sugestię, jak uczynić to bardziej klarownym (przynajmniej dla mnie). Dziękuję za szybką odpowiedź! – brycemcd

Powiązane problemy