जब उल्का अनुप्रयोग विकास, परीक्षण या उत्पादन वातावरण के रूप में चलता है तो मुझे विभिन्न खातों के प्रदाता की कॉन्फ़िगरेशन का उपयोग करने की आवश्यकता होती है।एक उल्का आवेदन कैसे जानता है कि यह विकास, परीक्षण या उत्पादन पर्यावरण पर चल रहा है?
उत्तर
एक इस
https://github.com/possibilities/meteor-environment-hooks
टिप्पणी पूरा करने के लिए वास्तव में गंदा तरीका: इंटरफ़ेस ठीक IMHO, कार्यान्वयन गंदा
यह केवल सबसे बुनियादी परिस्थितियों के लिए उपयुक्त है और यदि आप अपनी स्थानीय मशीन पर पूर्ण तैनाती किए बिना अपने एनवी का परीक्षण करना चाहते हैं तो काम नहीं करेगा। –
हाँ, निश्चित रूप से एक स्टॉप अंतर। हालांकि बुनियादी परिस्थितियों में काम करता है। मैं इसे नई ऑथ सिस्टम के लिए उचित रूप से एपीआई आईडी सेट करने के लिए उपयोग करता हूं लेकिन मैं इसे बेहतर समाधान के साथ बदलने के लिए उत्सुक हूं। –
है वहाँ एक खुला pull request GitHub पर जो उस के लिए अनुमति होगी है। टिप्पणी/इसके लिए वोट दें, इसलिए इसमें शामिल होने की अधिक संभावना है!
आप जब meteor run
या meteor deploy
चल Meteor.settings
इस्तेमाल किया --settings
विकल्प के साथ मिलकर उपयोग कर सकते हैं।
उदाहरण के लिए, dev
मोड में चलाने के लिए, एक JSON फ़ाइल बनाने के लिए, यह meteorConfigDev.json कहते हैं, और उस में निम्नलिखित डाल:
{
"public" : {
"mode" : "dev"
},
"anotherProperty" : "anotherValue"
}
उपयोग करके आपके एप्लिकेशन चलाने
meteor --settings meteorConfigDev.json
पर सर्वर और क्लाइंट पर आप "मोड" का उपयोग कर सकते हैं:
Meteor.settings.public.mode //in this case it will be "dev"
नोट करें कि सेट करें "सार्वजनिक" में टिंग सर्वर और क्लाइंट दोनों पर उपलब्ध हैं जबकि बाकी सब कुछ (इस मामले में "एक और प्रॉपर्टी") केवल सर्वर पर उपलब्ध है।
फिर आपके अलग-अलग वातावरण के लिए अलग-अलग कॉन्फ़िगरेशन फ़ाइलें हो सकती हैं।
सर्वर पर:
var inDevelopment = function() {
return process.env.NODE_ENV === "development";
};
var inProduction = function() {
return process.env.NODE_ENV === "production";
};
उल्का वातावरण चर NODE_ENV जब आप meteor
चलाने "विकास" करने के लिए सेट करता है। उत्पादन में, आप वैरिएबल को जो भी चाहें सेट कर सकते हैं, अन्यथा यह "उत्पादन" के लिए डिफ़ॉल्ट होगा।
अद्यतन: मैंने क्लाइंट और सर्वर पर काम करने की अनुमति देने के लिए एक स्मार्ट पैकेज बनाया है।
mrt add allow-env
बस एक सर्वर फ़ाइल में अनुमति नियम सेट करें।
allowEnv({
NODE_ENV: 1
});
यह मेरे लिए काम नहीं करता है, क्योंकि मेरा ऐप स्वयं-होस्ट किया गया है और जब मैं अपना एप लॉन्च करता हूं "उल्का रन - प्रोडक्शन" उल्का के माध्यम से अभी भी प्रक्रिया "env.NODE_ENV "विकास" को सेट करता है (तर्कसंगत नहीं लगता है, लेकिन उनके पास resons - लिंक देखें)। यह वर्षों के लिए एक ज्ञात मुद्दा है और उदा। यहां चर्चा की गई: https://github.com/meteor/meteor/issues/1858। – DerWOK
"अन्यथा यह" उत्पादन "के लिए डिफ़ॉल्ट होगा: क्या यह होस्ट नहीं करता है कि आप होस्ट करने के लिए किस उपकरण का उपयोग करते हैं/आप किस उपकरण का उपयोग करते हैं? –
बहुत आसान। मैं अपने ऐप को पांच (हां, पांच!) विभिन्न वातावरण पर चला रहा हूं। मैं बस चार अलग-अलग वातावरणों के लिए नीचे दिखाए गए ROOT_URL पर एक स्विच स्टेटमेंट का उपयोग करता हूं। बेशक, यदि आप केवल दो वातावरण हैं तो आप एक if-else का उपयोग कर सकते हैं। सर्वर पर काम करता है। बस startup.js नामक एक नई फ़ाइल बनाएं और नीचे दिए गए कोड उदाहरण का उपयोग करें। चीयर्स! ध्यान दें कि उल्का अब Meteor.absoluteUrl()
प्रदान करता है, जो अतिरिक्त कार्यक्षमता के अलावा process.env.ROOT_URL
के समान है:
switch (process.env.ROOT_URL) {
case "http://www.production.com/":
BLOCK OF CODE HERE
break;
case "http://www.staging.com/":
BLOCK OF CODE HERE
break;
case "http://www.development.com/":
BLOCK OF CODE HERE
break;
case "http://localhost:3000/":
BLOCK OF CODE HERE
break;
}
सामान्य में, जावास्क्रिप्ट में एक स्विच बयान के लिए प्रारूप
switch(expression) {
case n:
code block
break;
case n:
code block
break;
default:
default code block
}
अद्यतन है। docs देखें।
मैंने इसी तरह के कोड के कारण कई ऐप्स तोड़ने को देखा है। यह कोड आपकी कार्यक्षमता को इस पर निर्भर करता है संपत्ति जो पर्यावरण (यूआरएल) से स्वतंत्र है। यदि यूआरएल बदल गया है, तो कार्यक्षमता संभावित रूप से कोई भी ध्यान देने योग्य नहीं हो सकती है। अगर आप यूआरएल को बदलना चाहते हैं तो आपको अपने कोड में एक स्थान और भी बदलना होगा (या दूसरा जोड़ें एक), जो आप कुछ महीनों में भूल गए होंगे। आपके पर्यावरण पर निर्भर कार्यक्षमता अक्सर आपके ऐप के लिए महत्वपूर्ण होती है, साफ-सफाई की जांच करना आसान नहीं होता है और अच्छी तरह से देखभाल नहीं की जाती है, इसलिए आपको अतिरिक्त सावधान रहना होगा। – opyh
@opyh : "एक्स कैसे पता चलता है कि वाई पर चलता है?" एक प्रश्न है जो पर्यावरण से सवाल करता है। पर्यावरण का निरीक्षण किए बिना आप इसका जवाब कैसे दे सकते हैं NT? ऐसे उत्तर दायरे से बाहर होंगे। यह मेरे अनुभव में कभी नहीं टूटा है; इसलिए, ऐसा लगता है कि आपको कुछ उदाहरणों और बेहतर समाधान के साथ आने की आवश्यकता होगी यदि आप इतने आश्वस्त हैं कि यह गलत है। –
मैंने आपके 'env' का निरीक्षण करने के खिलाफ सलाह नहीं दी थी, लेकिन आपको यूआरएल से अपने पर्यावरण का अनुमान नहीं लगाया जाना चाहिए, क्योंकि यूआरएल विभिन्न कारणों से आपके पर्यावरण से स्वतंत्र रूप से बदल सकता है। यदि आपके साथी सहकर्मी को यह नहीं पता है कि आपके ROOT_URL में आपके ऐप तर्क के लिए 'जादू' अतिरिक्त अर्थ है, तो 3 यथार्थवादी मामले हैं जो आपके ऐप को उत्पादन पर तोड़ देंगे: 1) 'www.', 2) को हटाएं 'http' से' https', 3) में आपके यूआरएल से जुड़े कई यूआरएल हैं और डिफ़ॉल्ट यूआरएल बदलते हैं। यह भी [DRY] (https://en.wikipedia.org/wiki/Don%27t_repeat_yourself) सिद्धांत के खिलाफ है। – opyh
उल्का 1.3 चूंकि इन झंडे बॉक्स से बाहर काम करते हैं:
Meteor.isDevelopment
Meteor.isProduction
Meteor.isTest
Meteor.isAppTest
इसे स्वीकार्य उत्तर होना चाहिए। –
- 1. गैर विकास पर्यावरण पर डेल्फी आवेदन डीबगिंग
- 2. यह निर्धारित करें कि ऐप एपीएनएस सैंडबॉक्स या उत्पादन पर्यावरण
- 3. उल्का पर्यावरण का पता लगाएं?
- 4. उत्पादन में Django-Celery चल रहा है
- 5. एक आवेदन है कि एक परीक्षण अवधि
- 6. क्या यह निर्धारित करने का कोई तरीका है कि विकास मोड में जीडब्ल्यूटी कोड चल रहा है या नहीं?
- 7. यह पता लगाना कि संगीत चल रहा है या नहीं?
- 8. यह निर्धारित करने के लिए कि मेरे आवेदन का पिछला उदाहरण चल रहा है या नहीं?
- 9. उल्का जेएस, एक डीबगर में चल रहा है?
- 10. विकास और उत्पादन पर्यावरण के साथ गिट
- 11. एक धागा है कि हर समय अपने आवेदन चल रहा है चलाता कैसे बनाएं
- 12. मेरा कोड कैसे बता सकता है कि यह Google के सर्वर या मेरे स्थानीय विकास सर्वर पर चल रहा है या नहीं?
- 13. एक उल्का आवेदन के साथ एसईओ पर प्रभाव क्या है?
- 14. आईआईएस कैसे जानता है कि यह किसी वेब साइट या वेब एप्लिकेशन प्रोजेक्ट की सेवा कर रहा है या नहीं?
- 15. 'उत्पादन' पर चल रहे रेक कार्य और पर्यावरण निर्दिष्ट करना?
- 16. कैसे पता चलेगा कि MediaRecorder चल रहा है या नहीं?
- 17. यह पता लगाने के लिए कि विकास कपड़े में एज़ूर एप्लिकेशन चल रहा है?
- 18. यह निर्धारित करने के लिए कि आपका ऐप स्थानीय पायथन विकास सर्वर पर चल रहा है या नहीं?
- 19. यह कैसे बताना है कि आपका कोड किसी आईफोन या आईफोन 3 जी पर चल रहा है या नहीं?
- 20. Heroku पर देरी_job कार्यकर्ता चल रहा है?
- 21. क्या यह ई जुनीट परीक्षण के लिए यह संभव है कि यह ग्रहण (एंटी की बजाय) में चल रहा है
- 22. NUnit नहीं चल रहा है सूट परीक्षण
- 23. एपीआई यह निर्धारित करने के लिए कि आईफोन या आईपैड पर चल रहा है
- 24. नाइट के साथ एक पाइथन पर्यावरण जैसे ऑटोोडक माया के अंदर यूनिट परीक्षण चल रहा है?
- 25. टॉमकैट कैसे चल रहा है या नहीं
- 26. एक सरणी पर dism_all चल रहा है?
- 27. मैं कैसे जांच सकता हूं कि एंड्रॉइड पर कोई ऐप चल रहा है या नहीं?
- 28. यह जांचने के लिए कि क्या कोई WPF एप्लिकेशन पहले से चल रहा है या नहीं?
- 29. डीबग नोड, यह क्या चल रहा है?
- 30. कैसे बताना है कि एक पूर्ण-स्क्रीन एप्लिकेशन चल रहा है या नहीं?
आसानी से सर्वर साइड पर Meteor.startup समारोह में एक स्विच बयान जोड़कर हासिल की। नीचे मेरा विस्तृत उत्तर देखें। – FullStack