2012-03-21 16 views
5

के लिए गतिशील ईसी 2 बाल्टी विकल्प मेरे पास एक रेल 3 एप्लिकेशन है जो अमेज़ॅन के एस 3 को डेटा स्टोर करने के लिए कैरियरवेव और कोहरे का उपयोग करता है। इस एप्लिकेशन को मैं बिल्डिंग कर रहा हूं, जिसके लिए मैं प्रत्येक उपयोगकर्ता को अपनी सुरक्षित ईसी 2 बाल्टी रखने की अनुमति देता हूं। आवेदन का आधार यह है कि उपयोगकर्ता खाता बनायेगा (तैयार) और मैं केवल उस उपयोगकर्ता के लिए अपने एप्लिकेशन के ईसी 2 उपयोगकर्ता और पासवर्ड के तहत एक स्टोरेज बाल्टी उत्पन्न करूंगा। वर्तमान दस्तावेज के आधार पर, मैंने कई बाल्टी रखने का कोई तरीका नहीं देखा है क्योंकि यह एफओजी वाईएमएल में कॉन्फ़िगर किया गया है। मैं उपयोगकर्ता विशेषताओं के आधार पर गतिशील रूप से इस FOG_DIRECTORY को सेट करने के विकल्पों के लिए पूछना चाहता हूं।धुंध/कैरियरवेव

मुझे पता है कि डायनामिक फ़ोल्डरों को प्रबंधित करने का एक तरीका है, लेकिन यह काम नहीं करेगा क्योंकि मुझे उपयोगकर्ता द्वारा समर्पित बाल्टी की आवश्यकता है।

अग्रिम धन्यवाद!

+0

क्या आप विस्तारित कर सकते हैं कि आप डायनामिक फ़ोल्डर्स का उपयोग क्यों नहीं कर सकते? क्या आपके उपयोगकर्ताओं को आपके ऐप के अलावा, सीधे पहुंच की आवश्यकता है? यदि नहीं, तो हस्ताक्षर किए गए यूआरएल महान काम करते हैं। –

+0

वर्तमान में एफओजी निर्देशिका मेरे कोहरे yml में सेट है। मैं उपयोगकर्ता स्तर पर एक बाल्टी आईडी स्टोर करना चाहता हूं। जब मुझे कुछ जानकारी स्टोर करने की आवश्यकता होती है, तो मैं उपयोगकर्ता को देखूंगा और उपयोग करने के लिए बाल्टी आईडी ढूंढूंगा। मेरा मुद्दा यह है कि कॉन्फ़िगरेशन yml के बाहर इस धुंध निर्देशिका को कैसे सेट करें? – Gregg

उत्तर

3

मान लें कि आपकी बाल्टी पहले से मौजूद है। निम्नलिखित का प्रयास करें:

#config/initializers/carrierwave.rb 

CarrierWave.configure do |config| 
    #...other configuration stuff... 
    config.fog_directory = 'null.example.com' 

    config.fog_host = proc do 
    proc do |file| 
     uploader = file.instance_variable_get :@uploader 
     "http://#{uploader.fog_directory}" 
    end 
    end 
end 

नोट नेस्टेड procs, इस के लेखन के रूप में प्रलेखन का जवाब carrierwave गलत है के लिए। यदि आप fog_host गतिशील होना चाहते हैं, तो आपको proc को लपेटना होगा ताकि कैरियरवेव कॉन्फ़िगरेशन क्लास सही चीज़ करे।

भले ही fog_directory गतिशील रूप से बाद में सेट हो। परीक्षण ढांचे और ऐसी शिकायत करें कि प्रारंभकर्ता में कुछ सेट नहीं है (यह चीजें सही तरीके से काम करती हैं सेटिंग हमेशा ओवरराइड होती है)।

#app/controllers/application_controller.rb 

before_filter :set_bucket 

def set_bucket 
    CarrierWave.configure do |config| 
    config.fog_directory = "#{current_user.id}.bucket.example.com" 
    end 
end 

अपने बाल्टी नामकरण सम्मेलन के अनुरूप set_bucket फ़ंक्शन को बदलें।

यदि आप प्रति उपयोगकर्ता एक बाल्टी के बजाय विकास में एक निश्चित बाल्टी चाहते हैं तो आप कुछ सशर्त तर्क जोड़ सकते हैं।

भी this ब्लॉग पोस्ट एक और दृष्टिकोण की रूपरेखा तैयार करता है।

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

  • कोई संबंधित समस्या नहीं^_^