Zoeken…
Geavanceerde omgevingsconfiguraties
Voor complexere toepassingen wilt u een object `` settings.json` bouwen met behulp van meerdere omgevingsvariabelen.
if(Meteor.isServer){
Meteor.startup(function()){
// this needs to be run on the server
var environment, settings;
environment = process.env.METEOR_ENV || "development";
settings = {
development: {
public: {
package: {
name: "jquery-datatables",
description: "Sort, page, and filter millions of records. Reactively.",
owner: "LumaPictures",
repo: "meteor-jquery-datatables"
}
},
private: {}
},
staging: {
public: {},
private: {}
},
production: {
public: {},
private: {}
}
};
if (!process.env.METEOR_SETTINGS) {
console.log("No METEOR_SETTINGS passed in, using locally defined settings.");
if (environment === "production") {
Meteor.settings = settings.production;
} else if (environment === "staging") {
Meteor.settings = settings.staging;
} else {
Meteor.settings = settings.development;
}
console.log("Using [ " + environment + " ] Meteor.settings");
}
});
}
App-parameters opgeven met METEOR_SETTINGS
De omgevingsvariabele METEOR_SETTINGS kan JSON-objecten accepteren en zal dat object weergeven in het Meteor.settings
object. Voeg eerst een settings.json
aan uw app-root met wat configuratie-informatie.
{
"public":{
"ga":{
"account":"UA-XXXXXXX-1"
}
}
}
Vervolgens moet u uw toepassing starten met uw instellingenbestand.
# run your app in local development mode with a settings file
meteor --settings settings.json
# or bundle and prepare it as if you're running in production
# and specify a settings file
meteor bundle --directory /path/to/output
cd /path/to/output
MONGO_URL="mongodb://127.0.0.1:27017" PORT=3000 METEOR_SETTINGS=$(cat /path/to/settings.json) node main.js
Deze instellingen zijn vervolgens toegankelijk via Meteor.settings en kunnen in uw app worden gebruikt.
Meteor.startup(function(){
if(Meteor.isClient){
console.log('Google Analytics Account', Meteor.settings.public.ga.account);
}
});
Omgevingsdetectie op de server
Omgevingsvariabelen zijn ook beschikbaar voor de server via het process.env
object.
if (Meteor.isServer) { Meteor.startup(function () { // detect environment by getting the root url of the application console.log(JSON.stringify(process.env.ROOT_URL)); // or by getting the port console.log(JSON.stringify(process.env.PORT)); // alternatively, we can inspect the entire process environment console.log(JSON.stringify(process.env)); }); }
Detectie van clientomgeving met behulp van Meteor-methoden
Om de omgeving op de server te detecteren, moeten we een helpermethode op de server maken, omdat de server zal bepalen in welke omgeving deze zich bevindt en vervolgens de helpermethode van de client aanroept. Kortom, we geven de omgevingsinformatie gewoon door van de server naar de client.
//------------------------------------------------------------------------------------------------------
// server/server.js
// we set up a getEnvironment method
Meteor.methods({
getEnvironment: function(){
if(process.env.ROOT_URL == "http://localhost:3000"){
return "development";
}else{
return "staging";
}
}
});
//------------------------------------------------------------------------------------------------------
// client/main.js
// and then call it from the client
Meteor.call("getEnvironment", function (result) {
console.log("Your application is running in the " + result + "environment.");
});
Detectie van clientomgeving met NODE_ENV
Vanaf Meteor 1.3 geeft Meteor nu de NODE_ENV
variabele standaard weer op de client.
if (Meteor.isClient) { Meteor.startup(function () { if(process.env.NODE_ENV === "testing"){ console.log("In testing..."); } if(process.env.NODE_ENV === "production"){ console.log("In production..."); } }); }