From 0f0769ab2b141a03b6d5be7dd5bc4f3d2949e148 Mon Sep 17 00:00:00 2001 From: Hannah Wolfe Date: Sun, 16 Jun 2013 17:14:01 +0100 Subject: [PATCH] issue #157 - init ordering and error handling reordering init so that settings are always loaded after the db is initialised adding error handling to promises --- core/ghost.js | 31 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/core/ghost.js b/core/ghost.js index fca9280d82..ed7926fc87 100644 --- a/core/ghost.js +++ b/core/ghost.js @@ -9,6 +9,7 @@ var config = require('./../config'), when = require('when'), express = require('express'), + errors = require('../core/shared/errorHandling'), path = require('path'), hbs = require('express-hbs'), _ = require('underscore'), @@ -121,23 +122,21 @@ }; Ghost.prototype.init = function () { - var settings = {}, - self = this, - configDeferred = when.defer(), - configPromise = configDeferred.promise; + var self = this; - models.Settings.findAll().then(function (result) { - _.map(result.models, function (member) { - if (!settings.hasOwnProperty(member.attributes.key)) { - settings[member.attributes.key] = member.attributes.value; - } - }); - configDeferred.resolve(settings); - }); - return when.all([instance.dataProvider.init(), instance.getPaths(), configPromise]).then(function (results) { - self.globalConfig = results[2]; - return; - }); + return when.join(instance.dataProvider.init(), instance.getPaths()).then(function () { + // TODO: this should use api.browse + return models.Settings.findAll().then(function (result) { + var settings = {}; + _.map(result.models, function (member) { + if (!settings.hasOwnProperty(member.attributes.key)) { + settings[member.attributes.key] = member.attributes.value; + } + }); + + self.globalConfig = settings; + }, errors.logAndThrowError); + }, errors.logAndThrowError); }; /**