एक छोटी सी झुंझलाहट के रूप में क्या शुरू कर दिया में ENV चर कैशिंग initializers हैं अब एक सिरदर्द में बदल गया है। मैं एक रेल 4 ऐप बना रहा हूं और कॉन्फ़िगरेशन के लिए एक प्रोफाइल और .env फ़ाइल के साथ अपने देव सेटअप के लिए फोरमैन का उपयोग कर रहा हूं। जब मैं .env फ़ाइल में एक ENV चर सेट करता हूं, तो यह मेरे ऐप द्वारा सही ढंग से उठाया जाता है। इस मामले में मैं प्रारंभिक में पेपरक्लिप के लिए कुछ ENV विकल्प सेट कर रहा हूं।क्यों मेरी रेल कंसोल (फोरमैन, देव env)
जब मैं एनएनवी चर के मान को बदलने के लिए जाता हूं तो समस्या सतह होती है। कंसोल में, यदि मैं ENV ["MY_VAR"] टाइप करता हूं, तो यह नया मान दिखाता है। हालांकि, मेरे प्रारंभकर्ता में उपयोग किया जाने वाला मान, जो संभवतः चलाया गया था जब मैंने कंसोल शुरू किया था, पुराना मान दिखाता है! कहीं भी मेरी परियोजना में पुराना मूल्य कहीं भी सूचीबद्ध नहीं है। इससे मुझे विश्वास होता है कि पर्यावरण किसी भी तरह से कैश किया जा रहा है या एनवी चर को मेरे खोल में निर्यात किया जा रहा है। मैं देखने के लिए स्थानों से बाहर भाग रहा हूं ताकि किसी भी मदद की सराहना की जा सके! मैं रूबी 1.9.3-पी 374 और रेल 4.1.0 के साथ एक मैक (10.9.4) पर विकास कर रहा हूं।
उदाहरण:
रूट/.env
S3_BUCKET=mybucket
config/initializers/paperclip.rb
Paperclip::Attachment.default_options[:s3_credentials] = {bucket: ENV["S3_BUCKET"]}
करने के लिए "newbucket" और चलाने "फोरमैन मैं S3_BUCKET का मूल्य बदलते हैं तो चलाने रेल ग "या" रेल ग "कंसोल में प्रवेश करने की, तो ऐसा होता है:
ENV["S3_BUCKET"] # => "newbucket"
Paperclip::Attachment.default_options[:s3_credentials] # => {bucket: 'mybucket'}
मुझे यह उल्लेख करना चाहिए कि यह व्यवहार मेरे वर्गों में भी होता है जिसे मैंने/lib में रखा है। मुझे कल्पना है कि यह सब मूर्खतापूर्ण है क्योंकि मैंने अनदेखा किया है। कोई विचार?
यदि आप अपने env vars को बदलते हैं और अपना एप्लिकेशन उन्हें चुनना चाहते हैं, तो आपको ऐप को पुनरारंभ करना होगा। यह हमेशा मामला रहा है। – nzifnab
हां, ज़ाहिर है। यद्यपि स्पष्टीकरण के लिए, ऐप को पुनरारंभ करने के बाद, प्रारंभकर्ताओं में परिवर्तन नहीं उठाए जाते हैं, लेकिन उन्हें ENV हैश में उठाया जाता है। – Spencer
क्या आप किसी भी मौके से 'वसंत' का उपयोग कर रहे हैं? (अपने Gemfile की जांच करें।) – fny