2013-04-18 3 views
8

In base a Meteor documentation, è possibile includere un file di impostazioni tramite la riga di comando per fornire impostazioni specifiche della distribuzione.Accesso alle impostazioni delle meteore in un ambiente di produzione di proprietà

Tuttavia, l'opzione --settings sembra essere disponibile solo tramite i comandi run e deploy. Se eseguo la mia applicazione Meteor sulla mia infrastruttura, come indicato nella sezione in esecuzione sulla propria infrastruttura di documentation, non sembra che sia un modo per specificare un file di impostazioni specifico della distribuzione in qualsiasi punto del processo.

C'è un modo per accedere alle impostazioni di Meteor in un ambiente di produzione, in esecuzione sulla mia infrastruttura?

risposta

14

Sì, includere i contenuti delle impostazioni in una variabile ambientale METEOR_SETTINGS. Ad esempio,

export METEOR_SETTINGS='{"privateKey":"MY_KEY", "public":{"publicKey":"MY_PUBLIC_KEY", "anotherPublicKey":"MORE_KEY"}}'

e quindi eseguire l'applicazione di meteore come normale.

Questo popolerà l'oggetto Meteor.settings è normale. Per le impostazioni di cui sopra,

Meteor.settings.privateKey == "MY_KEY" #Only on server 
Meteor.settings.public.publicKey == "MY_PUBLIC_KEY" #Server and client 
Meteor.settings.public.anotherPublicKey == "MORE_KEY" #Server and client 

Per il nostro project, usiamo uno script upstart e includerlo lì (anche se upstart ha una sintassi leggermente diversa). Tuttavia, se lo si avvia con un normale script di shell, è sufficiente includere l'istruzione export prima del comando node. Si potrebbe, per esempio, hanno uno script come:

export METEOR_SETTINGS='{"stuff":"real"}' 
node /path/to/bundle/main.js 

o

METEOR_SETTINGS='{"stuff":"real"}' node /path/to/bundle/main.js

È possibile trovare maggiori informazioni sulle variabili bash here.

+0

Quindi, nel codice 'Meteor.settings.privateKey' funzionerà come previsto? – JT703

+0

Sì. Rispondi modificato per riflettere questo. – jagill

+0

Impressionante. Quindi, immagino che la dichiarazione di esportazione sia nel tuo codice? C'è una posizione particolare nella base di codice che hai messo quella dichiarazione? –