7

मेरे पास कई प्रमाण-पत्र हैं जिन्हें मुझे अपने ऐप को अमेज़ॅन एस 3 और अन्य सेवाओं तक पहुंचाने के लिए संभालना है।मैं स्थानीय स्तर पर पर्यावरण चर को कैसे परिभाषित कर सकता हूं और उनकी परिभाषाओं को बदल नहीं सकता/उन्हें Heroku में धक्का नहीं दे सकता?

मुझे अपना हेरोकू ऐप मिला और एस 3 के साथ चल रहा है, और यह बहुत अच्छा काम करता है। मैंने इस उदाहरण के बाद अपने एस 3 एक्सेस क्रेडेंशियल्स को परिभाषित किया: http://devcenter.heroku.com/articles/config-vars

हालांकि, अब मैं अपने स्थानीय विकास पर्यावरण से एस 3 तक पहुंच प्राप्त करने में सक्षम होना चाहता हूं। जाहिर है, कॉन्फ़िगरेशन वर्र्स जो मैंने उसकेोकू पर परिभाषित किया है, मेरे लोकहोस्ट पर उपलब्ध नहीं है। मैं इन चाबियों को स्थानीय रूप से कैसे परिभाषित कर सकता हूं? साथ ही, मैं विशेष रूप से ऐसे समाधान के लिए देख रहा हूं जो सुरक्षित है (उदाहरण के लिए यदि मैं अपने चाबियों को इंटियालाइज़र या किसी चीज़ में सादा पाठ में परिभाषित करता हूं, तो मैं नहीं चाहता कि वह फ़ाइल उसके आोकोक पर धक्का दे)।

पृष्ठभूमि के लिए, यहाँ क्या मैं अपने मॉडल में जोड़ने के लिए पेपरक्लिप S3

has_attached_file :photo, 
:storage => :s3, 
:bucket => 'bucket_name', 
:s3_credentials => { 
    :access_key_id => ENV['S3_KEY'], 
    :secret_access_key => ENV['S3_SECRET'] 
} 

उत्तर

9

इस तरह सामान को परिभाषित करने के लिए सबसे अच्छी जगह के साथ चलाने के लिए है, यदि आप इसे साझा नहीं करना चाहते हैं, शायद एक प्रारंभकर्ता है ।

# config/initializers/s3_constants.rb 


if Rails.env.development? 
    S3_KEY = "mys3key" 
    S3_SECRET = "mys3secret" 
end 

इस फाइल को सुनिश्चित करने के लिए .gitignore तो यह आपके भंडार के बाकी के साथ धक्का दे दिया नहीं किया जाएगा जोड़ा जाता है।

वास्तविक रूप से बोलते हुए, स्थिरता के आधार पर भिन्नता वाले स्थिरांक वास्तव में उस पर्यावरण के लिए फ़ाइल में स्थित होना चाहिए (यहां विकास.आरबी कहें) ... लेकिन उन फ़ाइलों को वास्तव में आपके संस्करण नियंत्रण प्रणाली में भी जोड़ा जाना चाहिए, और यदि आप निश्चित रूप से, निश्चित रूप से इस डेटा को गिट से बाहर करना चाहते हैं, तो एक अलग फ़ाइल जो आप नहीं करते हैं वह शायद आपकी सबसे अच्छी शर्त है।

+0

यह निश्चित रूप से ऐसा करने का सबसे अच्छा तरीका देखें। हालांकि, मैं परीक्षण करता हूं कि env 'उत्पादन नहीं है। तो यह आपके परीक्षण में भी काम करता है। –

+0

यदि आप फ़ाइल को अनदेखा कर रहे हैं, तो उत्पादन सर्वर env चर कैसे जानेंगे? क्या गिटिग्नर फाइलें अभी भी सर्वर पर पास हो जाती हैं? – kibaekr

2

बस अपने .bash_profile फ़ाइल में पर्यावरण चर को किसी भी अन्य पर्यावरण चर की तरह परिभाषित करें। हो सकता है कि अनुभाग को रेल-विशिष्ट पर्यावरण चर के रूप में खंडित करने के लिए एक टिप्पणी छोड़ दें।

#~/.bash_profile 
# Rails constants 
S3_KEY="blady" 
S3_SECRET="bladybloo123" 

इसके अलावा, हो सकता है आप अधिक विशिष्ट ताकि आप एक से अधिक S3 कनेक्शन परिभाषित हो सकता है कुछ करने के लिए नाम बदलना चाहते हैं ...

-2

Heroku Heroku config प्रदान करता है: जोड़ सकते हैं और आप कुंजी = मान प्रदान करते हैं । कॉन्फ़िगर वर्र्स प्रलेखन

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