एक एनवायरनमेंट वेरिएबल एक कुंजी/मान जोड़ी है, यह इस तरह दिखती है:
KEY=VALUE
हम इन वेरिएबल्स का उपयोग अपने कंप्यूटर में सभी प्रोग्राम्स के बीच कॉन्फ़िगरेशन विकल्प साझा करने के लिए करते हैं।
यही कारण है कि यह सीखना महत्वपूर्ण है कि वे कैसे काम करते हैं और ENV विशेष वेरिएबल का उपयोग करके अपने रूबी प्रोग्राम्स से उन्हें कैसे एक्सेस करें।
एनवायरनमेंट वेरिएबल्स के उदाहरण:
- अपने डिफ़ॉल्ट एडिटर को कॉन्फ़िगर करना
- रूबी को बताना कि जेम्स कहां ढूंढें (
GEM_PATH/GEM_HOME) - API कुंजियों को अपने एप्लिकेशन में पास करना, बिना उन्हें सोर्स कंट्रोल (git) में कमिट किए
- परिभाषित करना कि आपका ऑपरेटिंग सिस्टम बाइनरी फ़ाइलों (.exe विंडोज में) के लिए कहां देखे
- रेल्स को टेस्ट/डेवलपमेंट/प्रोडक्शन मोड में शुरू करना
आप लिनक्स/मैक में env कमांड और विंडोज में set कमांड के साथ अपने सभी एनवायरनमेंट वेरिएबल्स की सूची पा सकते हैं।
उदाहरण:
PWD=/home/jesus SHELL=/usr/bin/zsh RUBY_ENGINE=ruby RUBY_VERSION=2.6.0 GEM_ROOT=/opt/rubies/ruby-2.6.0/lib/ruby/gems/2.6.0 # ...
सूची काफी लंबी हो सकती है, लेकिन आपको इसे याद रखने की आवश्यकता नहीं है।
आप gem env कमांड के साथ सभी जेम-विशिष्ट वेरिएबल्स और कॉन्फ़िगरेशन भी प्रिंट कर सकते हैं।
अब:
यदि आप रूबी से इन एनवायरनमेंट वेरिएबल्स को एक्सेस करना चाहते हैं तो एक विशेष ऑब्जेक्ट है जिसका आप उपयोग कर सकते हैं।
आइए खोजें कि यह कैसे काम करता है!
रूबी में एनवायरनमेंट वेरिएबल्स का उपयोग करना
रूबी में यह ENV ऑब्जेक्ट है जो हैश की तरह व्यवहार करता है और आपको उन सभी एनवायरनमेंट वेरिएबल्स तक पहुंच देता है जो आपके लिए उपलब्ध हैं।
यहां कुछ उदाहरण हैं...
आप यह पता लगा सकते हैं कि आपके पास कितनी कुंजियां हैं:
ENV.size # 48
उनकी सूची प्राप्त करें:
ENV.keys
और विशिष्ट कुंजियों तक पहुंचें:
ENV["GEM_HOME"] # "/home/jesus/.gem/ruby/2.6.0"
आप map और select जैसे मेथड्स भी उपयोग कर सकते हैं:
ENV.select { |k,v| k.size < 4 } लेकिन आप रूबी के बाहर इन एनवायरनमेंट वेरिएबल्स को कैसे सेट करते हैं?
एनवायरनमेंट वेरिएबल्स कैसे सेट करें
आप एक बार के उपयोग के लिए एनवायरनमेंट वेरिएबल सेट कर सकते हैं।
इस तरह:
API_KEY=1 ruby -e 'p ENV["API_KEY"]'
इसे टर्मिनल में उपयोग करें, irb के बाहर, फिर रूबी के पास इस API_KEY मान तक पहुंच होगी।
यह API कुंजियों के लिए उपयोगी है, लेकिन रेल्स मोड सेट करने के लिए भी।
उदाहरण:
RAILS_ENV=production rails console
याद रखें:
यह आपके द्वारा अभी लॉन्च की जा रही प्रक्रिया के लिए इस विशिष्ट एनवायरनमेंट वेरिएबल को सेट करता है।
मतलब अगर मैं API_KEY=1 <command> करता हूं...
यह केवल उस कमांड के लिए काम करेगा!
यदि आप चाहते हैं कि यह वेरिएबल आपके वर्तमान टर्मिनल सत्र से लॉन्च की गई अन्य सभी कमांड्स द्वारा उपयोग किया जाए।
यह करें:
export API_KEY=1
अब यदि आप करते हैं:
ruby -e 'p ENV["API_KEY"]'
आपको 1 मिलेगा, बिना प्रीफिक्स्ड वेरिएबल के भी।
चेतावनी:
अपने रूबी एप्लिकेशन के भीतर कॉन्फ़िगरेशन के लिए ENV का उपयोग न करें, यह इसका उद्देश्य नहीं है। ENV केवल रूबी के बाहर से आने वाले बाहरी कॉन्फ़िगरेशन को पढ़ने के लिए है।
आंतरिक कॉन्फ़िगरेशन विकल्पों के लिए dry-configurable जैसे जेम का प्रयास करें।
एनवायरनमेंट वेरिएबल्स के महत्वपूर्ण गुण
आप इन गुणों को उपयोगी पा सकते हैं क्योंकि वे (संभावित रूप से अप्रत्याशित) व्यवहार की व्याख्या करते हैं।
- स्नैपशॉटिंग, एनवायरनमेंट वेरिएबल्स तब सेट होते हैं जब आप एक प्रोग्राम लॉन्च करते हैं और बाहरी परिवर्तनों से प्रभावित नहीं होते
- बंद वातावरण, एक प्रक्रिया के अंदर वेरिएबल्स बदलना (आपका रूबी प्रोग्राम एक प्रक्रिया है) प्रक्रिया के बाहर एनवायरनमेंट वेरिएबल्स को नहीं बदलता
- एनवायरनमेंट वेरिएबल्स स्थायी नहीं हैं, जब आप अपने कंप्यूटर को रीबूट करते हैं, या यहां तक कि जब आप अपना टर्मिनल बंद करते हैं, तो एनवायरनमेंट वेरिएबल्स में परिवर्तन खो जाते हैं (भले ही आप
exportलिनक्स + मैक /setविंडोज में उपयोग करें)
इन्हें ध्यान में रखें!
रेल्स क्रेडेंशियल्स
रेल्स 5.2 ने API कुंजियों को प्रबंधित करने में आपकी सहायता के लिए एक नई प्रणाली पेश की।
यह क्रेडेंशियल्स को सीधे config/credentials.yml.enc में सहेजकर काम करता है, यह एक एन्क्रिप्टेड फ़ाइल है जिसे आप केवल तभी पढ़ सकते हैं जब आपके पास master.key फ़ाइल हो।
विचार यह है कि आप केवल credentials.yml.enc कमिट करें और कुंजी को निजी रखें।
नए क्रेडेंशियल्स कैसे जोड़ें?
खैर, आप .enc फ़ाइल को सीधे संपादित नहीं कर सकते।
इस कमांड का उपयोग करें:
bin/rails credentials:edit
यह एक YAML फ़ाइल है, सुनिश्चित करें कि इसे सही ढंग से फॉर्मेट किया गया है।
अब:
आप अपने रेल्स ऐप से क्रेडेंशियल्स को इस तरह पढ़ सकते हैं...
Rails.application.credentials.github_api_key
वीडियो ट्यूटोरियल देखें
सारांश
आपने एनवायरनमेंट वेरिएबल्स के बारे में सीखा, एक उपयोगी टूल जो आपको अपने ऑपरेटिंग सिस्टम कॉन्फ़िगरेशन को प्रबंधित करने और अपनी API कुंजियों को निजी रखने की अनुमति देता है।

कृपया इस लेख को अपने दोस्तों के साथ साझा करें ताकि अधिक लोग इसे ढूंढ सकें 🙂
पढ़ने के लिए धन्यवाद!