如何在sails.js下设置不同的环境和相应的配置?

时间:2014-01-13 21:49:19

标签: ruby-on-rails environment-variables sails.js

我正在将2010 RoR应用迁移到Sails.js。从表面上看,Sails.js看起来像是将应用程序迁移到Node.js平台的最佳框架。在这个过程中,我遇到了一个限制 - 看起来风帆只能通过local.js和生产环境迎合开发环境。

在RoR下,我在config下有一个环境文件夹,其中包含dev,test,staging,production等ruby文件,其中包含为该环境定义的常量,日志记录级别等。我正在寻找Sails.js下相同结构的一个例子。

谢谢,

_K

1 个答案:

答案 0 :(得分:0)

SailsJS人员会告诉您,最佳做法是为每个环境创建和部署local.js文件,并将其保留在您的仓库中。

但是,如果您的项目位于私人仓库中并且您愿意在其中保存敏感信息,则可以使用process.env.NODE_ENV来编写条件。例如,以下是如何为adapters.js文件中的不同环境定义不同的适配器:

var production = {
  'default': 'mongo',
  mongo: {
    module: 'sails-mongo',
    url: "mongodb://[user]:[password]@[host]:[port]/[db-name]",
    schema: true
  }
};

var staging = {
  'default': 'mongo',
  mongo: {
    module: 'sails-mongo',
    url: "mongodb://[user]:[password]@[host]:[port]/[db-name]",
    schema: true
  }
};

var development = {
  'default': 'disk',
  disk: {
    module: 'sails-disk'
  }
};

var setAdapter = function() {
  var env = process.env.NODE_ENV;

  if (env === 'production') {
    return production;
  } else if (env === 'staging') {
    return staging;
  } else {
    return development;
  }
};

var adapters = setAdapter();

module.exports.adapters = adapters;

只需确保在服务器上设置NODE_ENV环境变量,就可以了。