Buscar..


Configuraciones de entorno avanzadas

Para aplicaciones más complejas, querrá construir un objeto `` settings.json` utilizando múltiples variables de entorno.

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

Especificando los parámetros de la aplicación con METEOR_SETTINGS

La variable de entorno METEOR_SETTINGS puede aceptar objetos JSON y expondrá ese objeto en el objeto Meteor.settings . Primero, agregue settings.json a la raíz de su aplicación con algo de información de configuración.

{
  "public":{
    "ga":{
      "account":"UA-XXXXXXX-1"
    }
  }
}

Entonces tendrás que iniciar tu aplicación usando tu archivo de configuración.

# 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

A estas configuraciones se puede acceder desde Meteor.settings y usarse en su aplicación.

Meteor.startup(function(){
  if(Meteor.isClient){
    console.log('Google Analytics Account', Meteor.settings.public.ga.account);
  }
});

Detección de entorno en el servidor

Las variables de entorno también están disponibles para el servidor a través del objeto process.env .

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

Detección del entorno del cliente utilizando métodos de meteoros

Para detectar el entorno en el servidor, tenemos que crear un método de ayuda en el servidor, ya que el servidor determinará en qué entorno se encuentra, y luego llamar al método de ayuda desde el cliente. Básicamente, simplemente transmitimos la información del entorno del servidor al cliente.

//------------------------------------------------------------------------------------------------------
// 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.");
});

Detección del entorno del cliente utilizando NODE_ENV

A partir de Meteor 1.3, Meteor ahora expone la variable NODE_ENV en el cliente de forma predeterminada.

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


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow