From 1a084568c8c0bcdd4ec07010154f753e84fec611 Mon Sep 17 00:00:00 2001 From: "Joseph D. Purcell" Date: Tue, 23 Jul 2013 17:42:55 -0400 Subject: [PATCH] Add environment overrides. --- app.js | 25 ++++++++++++++++++++++--- config.json | 21 +++++++++++++++------ 2 files changed, 37 insertions(+), 9 deletions(-) diff --git a/app.js b/app.js index cdfd61e..e61d1d1 100644 --- a/app.js +++ b/app.js @@ -9,8 +9,27 @@ var express = require('express') , config = require('./config') , app = express(); -global.io = require('socket.io').listen(app.listen( config.port )); +/** + * Source: http://stackoverflow.com/a/7965071 + */ +function mergeRecursive(obj1, obj2) { + for (var p in obj2) { + if (obj2.hasOwnProperty(p)) { + obj1[p] = (typeof obj2[p] === 'object') ? mergeRecursive(obj1[p], obj2[p]) : obj2[p]; + } + } + return obj1; +} + +// set config by environment +if (process.env.ENVIRONMENT!='default') { + app.config = mergeRecursive(config.default, config[process.env.ENVIRONMENT]); +} else { + app.config = config.default; +} +// setup socket io +global.io = require('socket.io').listen(app.listen( app.config.server.port )); io.configure(function () { io.set('transports', ['websocket', 'xhr-polling']); io.set('log level', config.log_level); @@ -24,13 +43,13 @@ io.sockets.on('connection', function (socket) // db connect var db = require('mongoose'); -db.connect(config.db.service+'://'+config.db.host+'/'+config.db.database); +db.connect(app.config.db.service+'://'+app.config.db.host+'/'+app.config.db.database); app.configure(function() { app.set('views', __dirname + '/views'); app.set('view engine', 'ejs'); app.set('view options', { layout:true, pretty: true }); - app.set('config', config); + app.set('config', app.config); app.set('db', db); app.use(express.favicon()); app.use(express.logger('dev')); diff --git a/config.json b/config.json index acd8224..a26bf82 100644 --- a/config.json +++ b/config.json @@ -1,9 +1,18 @@ { - "log_level": 0, - "port": 3000, - "db": { - "service": "mongodb", - "host": "localhost", - "database": "search_for_404_v4" + "default": { + "log_level": 0, + "server": { + "scheme": "http", + "host": "localhost", + "port": 3000 + }, + "db": { + "service": "mongodb", + "host": "localhost", + "database": "search_for_404_v4" + } + }, + "development": { + "log_level": 1 } }