2013-01-06 14 views
8

Qualcuno trova ancora la sintassi o un pattern per rilevare l'ambiente di hosting utilizzando Meteor.js? Ho degli zaini Heroku funzionanti, e ho un ambiente di sviluppo/sviluppo, ma sto disegnando un vuoto su come far sì che la mia app rilevi l'ambiente in cui è in esecuzione.Rilevare l'ambiente con Meteor.js?

C'è un modo per avere un nodo. js rileva su quale porta sta funzionando? Speravo che potesse esserci qualcosa di basso livello come app.address(). Port, ma non sembra funzionare ...

Modifica: Questa è la soluzione che ha funzionato per me. Si noti che è necessario eseguire quanto segue sul server, quindi è necessario includerlo in server \ server.js o in un file simile.

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)); 
    }); 
} 

creato anche il seguente:

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

che consente quanto segue sul lato client:

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

Grazie Rahul!

+0

Se si desidera pubblicare il codice che ha funzionato, è sufficiente modificare la propria domanda e menzionare che ha funzionato per voi, o inviare una risposta con il codice. Modificare la mia risposta non è proprio il posto giusto per farlo. :) – Rahul

+0

Oops! Hai risolto le cose. Grazie ancora per l'aiuto! :) – AbigailW

+0

Questo codice è estremamente utile, ma come FYI inizialmente è tornato indefinito (credo a causa del ritardo asincrono) Quando ho aggiunto l'errore come primo argomento e l'ho incluso in un condizionale per registrare l'errore, ha funzionato. –

risposta

12

È possibile controllare la variabile process.env sul server per trovare informazioni sul contesto attuale, tra cui il porto:

{ 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

Ah ah! Penso che questo potrebbe fare il trucco. Proprio il giusto indizio per rimettermi in carreggiata! – AbigailW