2013-01-06 37 views
8

कोई भी Meteor.js का उपयोग कर होस्टिंग पर्यावरण का पता लगाने के लिए अभी तक वाक्यविन्यास या पैटर्न को समझता है? मुझे हेरोोकू बिल्डपैक्स काम कर रहे हैं, और एक देव/उत्पादन वातावरण है, लेकिन मैं अपने ऐप को यह पता लगाने के लिए एक खाली चित्रण कर रहा हूं कि यह पता लगाने के लिए कि यह कौन सा वातावरण चल रहा है।Meteor.js के साथ पर्यावरण का पता लगाना?

क्या नोड होने का कोई तरीका है। जेएस यह पता लगाता है कि यह किस पोर्ट पर चल रहा है? मैं उम्मीद कर रहा था कि ऐप.ड्रेस() पोर्ट जैसी कुछ निम्न स्तर हो सकती है, लेकिन यह काम नहीं लग रहा है ...

संपादित करें: यह वह समाधान है जो मेरे लिए काम करता है। ध्यान दें कि सर्वर पर निम्न को चलाने की आवश्यकता है, इसलिए इसे सर्वर \ server.js, या एक समान फ़ाइल में शामिल करने की आवश्यकता है।

if (Meteor.is_server) { 
    Meteor.startup(function() { 
     // we want to be able to inspect the root_url, so we know which environment we're in 
     console.log(JSON.stringify(process.env.ROOT_URL)); 

     // in case we want to inspect other process environment variables 
     //console.log(JSON.stringify(process.env)); 
    }); 
} 

इसके अलावा निम्नलिखित बनाया:

Meteor.methods({ 
    getEnvironment: function(){ 
    if(process.env.ROOT_URL == "http://localhost:3000"){ 
     return "development"; 
    }else{ 
     return "staging"; 
    } 
    } 
});  

किस क्लाइंट पक्ष पर निम्नलिखित के लिए अनुमति देता है:

Meteor.call("getEnvironment", function (result) { 
     console.log("Your application is running in the " + result + "environment."); 
}); 

धन्यवाद राहुल!

+0

यदि आप काम करने वाले कोड को पोस्ट करना चाहते हैं, तो बस अपना खुद का प्रश्न संपादित करें और उल्लेख करें कि यह आपके लिए काम करता है, या कोड के साथ उत्तर पोस्ट करता है। मेरा जवाब संपादित करना वास्तव में ऐसा करने का सही स्थान नहीं है। :) – Rahul

+0

ओह! क्रमबद्ध चीजें बाहर। मदद के लिए एक बार फिर से धन्यवाद! :) – AbigailW

+0

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

उत्तर

12

आप वर्तमान पर्यावरण के बारे में जानकारी प्राप्त करने के सर्वर पर process.env चर निरीक्षण कर सकते हैं, बंदरगाह सहित:

{ TERM_PROGRAM: 'Apple_Terminal', 
    TERM: 'xterm-256color', 
    SHELL: '/bin/bash', 
    TMPDIR: '/var/folders/y_/212wz0cx5vs20yd7y2psnh7m0000gp/T/', 
    Apple_PubSub_Socket_Render: '/tmp/launch-hch25f/Render', 
    TERM_PROGRAM_VERSION: '309', 
    OLDPWD: '/usr/local/meteor/bin', 
    TERM_SESSION_ID: '3FE307A0-B8FC-41AD-B1EB-FCFA0B8B25D1', 
    USER: 'Rahul', 
    COMMAND_MODE: 'unix2003', 
    SSH_AUTH_SOCK: '/tmp/launch-gFCBXS/Listeners', 
    __CF_USER_TEXT_ENCODING: '0x1F6:0:0', 
    Apple_Ubiquity_Message: '/tmp/launch-QAWKHL/Apple_Ubiquity_Message', 
    PATH: '/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin', 
    PWD: '/Users/Rahul/Documents/Sites/test', 
    NODE_PATH: '/usr/local/meteor/lib/node_modules', 
    SHLVL: '1', 
    HOME: '/Users/Rahul', 
    LOGNAME: 'Rahul', 
    LC_CTYPE: 'UTF-8', 
    SECURITYSESSIONID: '186a4', 
    PORT: '3001', 
    MONGO_URL: 'mongodb://127.0.0.1:3002/meteor', 
    ROOT_URL: 'http://localhost:3000' } 
+0

आह हे! मुझे लगता है कि यह चाल चल सकता है। मुझे वापस ट्रैक पर लाने के लिए सही तरह का सुराग! – AbigailW

2

मैं NODE_ENV चर के साथ ऊपर की भिन्नता का इस्तेमाल किया। अधिक जानकारी के लिए देखें:

http://meteorpedia.com/read/Environment_Variables#Checking%20the%20value%20of%20an%20Environment%20Variable

if Meteor.isServer 
    Meteor.methods 
    'getEnvironment': -> process.env.NODE_ENV 

Meteor.call 'getEnvironment', (err, result) -> 
    if result == 'development' 
    console.log('In dev env')