2011-10-08 14 views
19

मैं s3 के लिए फ़ाइलों को अपलोड करने के लिए वाहकवेव का उपयोग कर रेल 3.1 ऐप बना रहा हूं। मैंने कैरियरवेव गिथब रिपोजिटरी के निर्देशों का पालन किया है और अब मैं अपने aws बाल्टी में फ़ाइलों को अपलोड करने में सक्षम हूं। यह परीक्षण है जो मुझे अटक गया। पिछले दो दिनों में मैं अन्य सभी Q & ए का उपयोग करके गुगल रहा हूं और संशोधित कर रहा हूं, लेकिन मुझे अंत में 'माँ' रो रही है। यहाँ मैं क्या कर लिया है:rspec परीक्षण कैरियरवेव - नौसिखिया

/app/uploaders/image_file_uploader.rb

storage :fog 

def store_dir 
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}" 
end 

/config/initializers/carrierwave.rb

if Rails.env.test? or Rails.env.cucumber? 
    CarrierWave.configure do |config| 
    config.storage = :file 
    config.enable_processing = false 
    end 
end 

/spec/uploaders/image_file_uploader_spec.rb

require 'spec_helper' 
require 'support/fog_helper' 
require 'carrierwave/test/matchers' 

describe ImageFileUploader do 
    include CarrierWave::Test::Matchers 

    before do 
    ImageFileUploader.enable_processing = true 
    @user = Factory(:user, :email => "photo_taker[email protected]") 
    @uploader = ImageFileUploader.new(@user, Factory(:image)) 
    @uploader.store!(File.open("#{Rails.root}/tmp/uploads/#{Rails.env}/images/")) 
    end 

    after do 
    @uploader.remove! 
    ImageFileUploader.enable_processing = false 
    end 

    context 'the tiny version' do 
    it "should scale down a landscape image to be exactly 50 by 50 pixels" do 
     @uploader.tiny.should have_dimensions(50, 50) 
    end 
    end 

कल्पना/factories.rb

+०१२३५१६४१०६
Factory.define :image do |image| 
    include ActionDispatch::TestProcess 

    image.date_taken   "Sun, 09 Oct 2011" 
    image.time_taken   "2000-01-01 03:41:00 UTC" 
    image.image_file   fixture_file_upload('spec/support/test_images/audi.png', 'image/png') 
    image.taken_by    "John Doe" 
    image.collection   "N/A" 
    image.comments    "Beautiful day!" 
    image.association :user 

end 

मेरी/सार्वजनिक/अपलोड/tmp/छवियों जिसका पीढ़ी मैं परीक्षण कर रहा हूँ की 'छोटे' (और अन्य संस्करणों) के साथ भर हो रही है, वहीं परीक्षण निम्न त्रुटि संदेश के साथ विफल करने के लिए जारी:

1) ImageFileUploader छोटे संस्करण एक परिदृश्य छवि को सुधारने की पैमाने पर वास्तव में 50 50 से पिक्सल

Failure/Error: @uploader = ImageFileUploader.new(@user, Factory(:image)) 
Excon::Errors::NotFound: 
    Expected(200) <=> Actual(404 Not Found) 
    request => {:expects=>200} 
    response => #<Excon::Response:0x0000010569f928 @body="", @headers={}, @status=404> 
# ./spec/uploaders/image_file_uploader_spec.rb:11:in `block (2 levels) in <top (required)>' 

मुझे पता होना करने के लिए ऊपर इसका मतलब है कि rspec मेरी परीक्षण बाल्टी नहीं मिल रहा है चाहिए। किसी के पास कोई विचार है कि मैं क्या गलत कर रहा हूं?

किसी भी नई लीड के लिए बहुत आभारी होंगे।

अद्यतन: 10/11/11 फ़ाइल अपलोड काम करता है लेकिन मैं यह पता लगाने में रुक गया हूं कि छवियों को पास करने के लिए परीक्षण कैसे प्राप्त किया जाए। संक्षेप में, मैं प्लेसहोल्डर छवि का उपयोग करूंगा क्योंकि मैं अपने बाकी ऐप को निकाल देता हूं और बाद में लौटता हूं। एक बार जब मैं इसे समझूं तो मैं एक और अपडेट पोस्ट करूंगा। (यदि आपके पास कोई अंतर्दृष्टि है, तो किसी भी विचार को छोड़ दें।)

+0

क्या आपका '@ अपलोडर.स्टोर!' निर्देशिका को संग्रहीत करना चाहिए? मुझे लगता है कि यह एक विशिष्ट फाइल होना चाहिए। – Andrew

+0

@BenU ने मेरा उत्तर आपकी समस्या का समाधान किया? अगर ऐसा है तो कृपया इसे स्वीकार करें :-) –

उत्तर

15

क्या आपने यह कोशिश की है?

  1. /app/uploaders/image_file_uploader.rb में हटाने storage :fog

  2. /config/initializers/carrierwave.rb में उत्पादन के लिए एक समान विन्यास खंड जोड़ें आप परीक्षण और ककड़ी के लिए है के रूप में है, और वहाँ config.storage = :fog निर्धारित किया है।

+0

इसने हलर-विशिष्ट कॉन्फ़िगरेशन के कारण एक संबंधित समस्या हल की, बजाय पर्यावरण पर आधारित मेरी 'स्टोरेज' कॉन्फ़िगरेशन को सेट करने के बजाय। मेरे मामले में, मेरे सभी अपलोड एस 3 पर जा रहे थे, इसलिए मुझे अपलोडर मॉडल के अंदर स्टोरेज कॉन्फ़िगरेशन डालने की आवश्यकता नहीं थी। धन्यवाद! – jefflunt