docs का कहना है कि मैं इस तरह से पर्यावरण चरों तक पहुंच सकता हूं:

database_name = "${?DB_NAME}"

जहां DB_NAME एक पर्यावरण चर है। क्या मुझे प्रश्नचिह्न ? लगाना होगा या यह कि दुर्घटना को रोकने के लिए है यदि वह मौजूद नहीं है?

साथ ही, क्या हमें घोषित होने से पहले किसी फ़ाइल में एक चर को संदर्भित करने की अनुमति है?

foo = "hello-${bar}"
bar = "baz"
11
Blankman 15 फरवरी 2017, 06:40
दो अलग-अलग प्रश्न पूछना बेहतर है, आपकी प्रत्येक चिंता के लिए एक।
 – 
Nader Ghanbari
15 फरवरी 2017, 07:10

1 उत्तर

सबसे बढ़िया उत्तर

1- ? का मतलब वैकल्पिक है। यदि पर्यावरण चर रनटाइम पर मौजूद नहीं है, तो पूरी लाइन को अनदेखा कर दिया जाएगा, जैसे कि यह पहले स्थान पर मौजूद नहीं थी। इसलिए जब आप वैकल्पिक ओवरराइडिंग चाहते हैं तो इसका इस्तेमाल करें।

अधिक के लिए दस्तावेज़ का वैकल्पिक Env Vars अनुभाग देखें जानकारी।

ध्यान दें कि ? सभी प्रतिस्थापनों के लिए काम करता है न कि केवल env vars के लिए।

2- हां, आप एक वेरिएबल को रेफर कर सकते हैं जिसे बाद में कॉन्फिग फाइल (फॉरवर्ड रेफरेंसिंग) में परिभाषित किया गया है। जब तक मान मौजूद है और कोई चक्र (गोलाकार निर्भरता) नहीं है, प्रतिस्थापन सफलतापूर्वक किया जाएगा।

इसके बारे में इस तरह से सोचें: पहले पूरी फ़ाइल को रनटाइम पर पार्स किया जाएगा और अक्षर का मान उनके वर्रों से जुड़ा होगा, और फिर प्रतिस्थापन होगा, इसलिए ऑर्डर वास्तव में कोई फर्क नहीं पड़ता।

12
Nader Ghanbari 30 नवम्बर 2019, 20:36
तो क्या मुझे उपयोग करना होगा? पर्यावरण चर के साथ? यदि नहीं, तो मैं उन्हें सामान्य रूप से कैसे एक्सेस करूं?
 – 
Blankman
15 फरवरी 2017, 17:37
नहीं, आपको उनका उपयोग करने की आवश्यकता नहीं है। केवल अगर आप optional overriding चाहते हैं। सामान्य उपयोग का मामला myVar = ${MY_ENV_VAR} होगा।
 – 
Nader Ghanbari
15 फरवरी 2017, 23:49
मैं देख रहा हूँ, बस भ्रमित है कि यह कैसे जानता है कि यह एक ENV VAR है, फिर कैप्स लॉक? :)
 – 
Blankman
15 फरवरी 2017, 23:53
नहीं, डिफ़ॉल्ट रूप से यह सभी सिस्टम गुणों और पर्यावरण चर को ध्यान में रखता है, प्रारूप वास्तव में मायने नहीं रखता है। BTW, ध्यान रखें कि भले ही आपके पास myVar = 2 हो, लेकिन रनटाइम में समान नाम वाला एक env var हो, जैसे export myVar = 10 आपका कॉन्फिग वैल्यू ओवरराइड हो जाएगा! व्यक्तिगत रूप से मुझे यह पसंद नहीं है इसलिए नेमस्पेस्ड कॉन्फिग पैराम्स (जैसे app.settings.feature1.myVar या घुंघराले ब्रेसिज़ app { settings { feature { myVar = ....) का उपयोग करने का प्रयास करें।
 – 
Nader Ghanbari
16 फरवरी 2017, 00:06
1
वैसे, डॉक्स सब कुछ बहुत स्पष्ट तरीके से उल्लेख करता है :) तो मैं एक बेहतर समझ को समझने के लिए पूरे दस्तावेज़ (यह केवल कुछ पृष्ठ हैं) पढ़ूंगा। आप उनका कोड भी देख सकते हैं और उसे डीबग कर सकते हैं: github.com/typesafehub/config
 – 
Nader Ghanbari
16 फरवरी 2017, 00:08