2012-12-02 7 views
8

मेरे पास एक बहुत ही सरल module है, मैं वीसीआर मणि का उपयोग कर रूबी के साथ परीक्षण कर रहा हूं।वीसीआर कैसेट्स रिकॉर्ड नहीं कर रहा है

मैंने प्रलेखन के अनुसार वीसीआर कॉन्फ़िगर किया है लेकिन कैसेट निर्देशिका में रिकॉर्ड करने के लिए एक कैसेट प्राप्त नहीं हो सकता है। मैंने मामले में कैसेट निर्देशिका पर अनुमतियों को 777 तक बदल दिया है। वास्तव में अजीब चीज है, मैंने पूरी तरह से कैसेट निर्देशिका हटा दी है, चश्मा चलाया है, और फिर एक नई कैसेट निर्देशिका बनाई गई है।

मैं Typhoeus 0.4.2 Hydra के साथ उपयोग कर रहा हूं। मैं फिलहाल टायफियस को अपग्रेड नहीं कर सकता।

प्रासंगिक कोड:

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 

    ... 

मुझे पता नहीं क्यों कैसेट नहीं लिखा जा रहा है है।

+2

+1। मैं ऑफ विषय के रूप में बंद करने जा रहा था और आपको रिकॉर्ड हेड (या ब्लू-रे में अपग्रेड) साफ़ करने की सलाह देता हूं, लेकिन मुझे लगता है कि आप रूबी कोड के बारे में बात कर रहे हैं :) –

+0

एलओएल! मैं इस मुद्दे को हल करने की कोशिश में इतना लपेट गया था कि मैंने यह भी ध्यान नहीं दिया था। उस समस्या के लिए, मैंने बस टेप पर उड़ा दिया, इसे अनप्लग किया और इसे वापस प्लग किया। – brycemcd

उत्तर

9

समस्या यह है कि आप अपने HTTP क्लाइंट के रूप में Typhoeus का उपयोग कर रहे हैं, लेकिन FakeWeb में हुकिंग कर रहे हैं, जो केवल Net::HTTP के लिए समर्थन प्रदान करता है। वीसीआर Typhoeus में सीधे हुक कर सकते हैं (क्योंकि यह ऐसा करने के लिए अच्छा सार्वजनिक एपीआई प्रदान करता है) यदि आप इसे कॉन्फ़िगर करें:

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

hook_into docs सूची सभी विकल्प और जो कि कौन सी HTTP ग्राहकों के साथ काम हुक। अगर आपके पास इस भ्रम से दूसरों को रोकने के लिए प्रलेखन में सुधार के लिए कोई सुझाव है, तो कृपया मुझे बताएं। शीर्षक के लिए

+0

एएच, जो समझ का एक टन बनाता है। किसी कारण से, 'hook_into' ने बताया कि वीसीआर की आवश्यकता होगी और वेबमाक (या: फ़ैकवेब या जो भी हो) की सुविधाओं का उपयोग करें, भले ही http क्लाइंट स्पेक सूट के बाहर उपयोग किया जा रहा हो। किसी भी दर पर, मैंने https://github.com/vcr/vcr/pull/228 पर एक पुल अनुरोध बनाया है कि इसे अधिक स्पष्ट (कम से कम मेरे लिए) कैसे करें। जल्दी जवाब देने का शुक्रिया! – brycemcd

संबंधित मुद्दे