From c698ae78a7aae2ea980a7b00df98435cb5e41dcb Mon Sep 17 00:00:00 2001 From: Riley Davis Date: Thu, 10 Nov 2016 13:02:52 -0700 Subject: [PATCH 1/3] initialize settings in an init file before app accepts requests --- bin/www | 34 +++++++++++++++++++--------------- init.js | 6 ++++++ models/setting.js | 8 ++++++++ 3 files changed, 33 insertions(+), 15 deletions(-) create mode 100644 init.js diff --git a/bin/www b/bin/www index af91c2c40..6ebfc6944 100755 --- a/bin/www +++ b/bin/www @@ -13,27 +13,31 @@ process.env.DEBUG = process.env.TALK_DEBUG; const app = require('../app'); const debug = require('debug')('talk:server'); const http = require('http'); +const initPromise = require('../init'); +let server; -/** - * Get port from environment and store in Express. - */ +initPromise.then(() => { + /** + * Get port from environment and store in Express. + */ -const port = normalizePort(process.env.TALK_PORT || '3000'); -app.set('port', port); + const port = normalizePort(process.env.TALK_PORT || '3000'); + app.set('port', port); -/** - * Create HTTP server. - */ + /** + * Create HTTP server. + */ -const server = http.createServer(app); + server = http.createServer(app); -/** - * Listen on provided port, on all network interfaces. - */ + /** + * Listen on provided port, on all network interfaces. + */ -server.listen(port); -server.on('error', onError); -server.on('listening', onListening); + server.listen(port); + server.on('error', onError); + server.on('listening', onListening); +}); /** * Normalize a port into a number, string, or false. diff --git a/init.js b/init.js new file mode 100644 index 000000000..9c3c2bda5 --- /dev/null +++ b/init.js @@ -0,0 +1,6 @@ +const Setting = require('./models/setting'); + +const defaults = {id: '1', moderation: 'pre'}; +module.exports = Setting.init(defaults); + +// presumably this file will grow, which is why I've broken it out. diff --git a/models/setting.js b/models/setting.js index 15c457307..a9b60abb8 100644 --- a/models/setting.js +++ b/models/setting.js @@ -11,6 +11,14 @@ const SettingSchema = new Schema({ } }); +/** + * this is run once when the app starts to ensure settings are populated + * @return {Promise} null initialize the global settings object + */ +SettingSchema.statics.init = function (defaults) { + return this.update({id: '1'}, {$setOnInsert: defaults}, {upsert: true}); +}; + /** * gets the entire settings record and sends it back * @return {Promise} settings the whole settings record From 677faebf7685551a456d4203e0bc003be0f958f1 Mon Sep 17 00:00:00 2001 From: Riley Davis Date: Thu, 10 Nov 2016 13:09:23 -0700 Subject: [PATCH 2/3] adhere to new linting rules --- bin/www | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/bin/www b/bin/www index 6ebfc6944..639852a93 100755 --- a/bin/www +++ b/bin/www @@ -16,7 +16,8 @@ const http = require('http'); const initPromise = require('../init'); let server; -initPromise.then(() => { +initPromise +.then(() => { /** * Get port from environment and store in Express. */ From 7a8cb90ebd7ab741b0a9e5a5794087c1d4f03a62 Mon Sep 17 00:00:00 2001 From: David Erwin Date: Thu, 10 Nov 2016 15:28:14 -0500 Subject: [PATCH 3/3] Fix port scope bug --- bin/www | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/bin/www b/bin/www index 639852a93..792a6b98a 100755 --- a/bin/www +++ b/bin/www @@ -14,31 +14,32 @@ const app = require('../app'); const debug = require('debug')('talk:server'); const http = require('http'); const initPromise = require('../init'); +const port = normalizePort(process.env.TALK_PORT || '3000'); + let server; initPromise -.then(() => { - /** - * Get port from environment and store in Express. - */ + .then(() => { + /** + * Get port from environment and store in Express. + */ - const port = normalizePort(process.env.TALK_PORT || '3000'); - app.set('port', port); + app.set('port', port); - /** - * Create HTTP server. - */ + /** + * Create HTTP server. + */ - server = http.createServer(app); + server = http.createServer(app); - /** - * Listen on provided port, on all network interfaces. - */ + /** + * Listen on provided port, on all network interfaces. + */ - server.listen(port); - server.on('error', onError); - server.on('listening', onListening); -}); + server.listen(port); + server.on('error', onError); + server.on('listening', onListening); + }); /** * Normalize a port into a number, string, or false.