From fec6633a7a461b04bbc2e2d3594b43d82bc1cb5f Mon Sep 17 00:00:00 2001 From: oleg Date: Sun, 5 Jul 2015 20:18:51 +0300 Subject: [PATCH] add error handler for resources --- data/projects/project1/config.yaml | 2 +- resources/builds.js | 12 ++++-------- resources/errorHandler.js | 9 +++++++++ resources/index.js | 6 ++++-- resources/projects.js | 15 +++++---------- 5 files changed, 23 insertions(+), 21 deletions(-) create mode 100644 resources/errorHandler.js diff --git a/data/projects/project1/config.yaml b/data/projects/project1/config.yaml index 52b5cea..3b3ef91 100644 --- a/data/projects/project1/config.yaml +++ b/data/projects/project1/config.yaml @@ -9,7 +9,7 @@ catchRev: notify: on: - - done + # - done # - error - change to: diff --git a/resources/builds.js b/resources/builds.js index 2ffeccc..bd03ab3 100644 --- a/resources/builds.js +++ b/resources/builds.js @@ -7,7 +7,7 @@ var Steppy = require('twostep').Steppy, module.exports = function(app) { var resource = app.dataio.resource('builds'); - resource.use('readAll', function(req, res) { + resource.use('readAll', function(req, res, next) { Steppy( function() { var findParams = _(req.data).pick('offset', 'limit'); @@ -19,13 +19,11 @@ module.exports = function(app) { function(err, builds) { res.send(builds); }, - function(err) { - console.log(err.stack || err) - } + next ); }); - resource.use('read', function(req, res) { + resource.use('read', function(req, res, next) { Steppy( function() { var findParams = {}; @@ -35,9 +33,7 @@ module.exports = function(app) { function(err, build) { res.send(build[0]); }, - function(err) { - console.log(err.stack || err) - } + next ); }); diff --git a/resources/errorHandler.js b/resources/errorHandler.js new file mode 100644 index 0000000..0794308 --- /dev/null +++ b/resources/errorHandler.js @@ -0,0 +1,9 @@ +'use strict'; + +module.exports = function(err, req, res, next) { + console.error( + 'Error is occurred during requesting ' + + req.resource.namespace.name + ' ' + req.action + ':', + err.stack || err + ); +}; diff --git a/resources/index.js b/resources/index.js index bcb8067..65d812e 100644 --- a/resources/index.js +++ b/resources/index.js @@ -1,9 +1,11 @@ 'use strict'; -var _ = require('underscore'); +var _ = require('underscore'), + errorHandler = require('./errorHandler'); module.exports = function(app) { _(['builds', 'projects']).each(function(resource) { - require('./' + resource)(app); + var resource = require('./' + resource)(app); + resource.use(errorHandler); }); }; diff --git a/resources/projects.js b/resources/projects.js index 3d1c42e..3d6360b 100644 --- a/resources/projects.js +++ b/resources/projects.js @@ -6,7 +6,8 @@ var Steppy = require('twostep').Steppy, Distributor = require('../lib/distributor').Distributor, db = require('../db'), path = require('path'), - fs = require('fs'); + fs = require('fs'), + utils = require('../lib/utils'); module.exports = function(app) { @@ -58,9 +59,7 @@ module.exports = function(app) { } }) .on('end', callback) - .on('error', function(err) { - console.log(err.stack || err); - }); + .on('error', utils.logErrorCallback); }); buildDataResourcesHash[build.id] = buildDataResource; }; @@ -97,9 +96,7 @@ module.exports = function(app) { writeStreamsHash[filePath] = fs.createWriteStream( getBuildLogPath(build.id), {encoding: 'utf8'} ); - writeStreamsHash[filePath].on('error', function(err) { - console.error(err.stack || err); - }); + writeStreamsHash[filePath].on('error', utils.logErrorCallback); } // TODO: close ended files writeStreamsHash[filePath].write(data); @@ -117,9 +114,7 @@ module.exports = function(app) { distributor.run({ projectName: projectName, initiator: {type: 'user'} - }, function(err, build) { - console.log('>>> err, build = ', err && err.stack || err, build); - }); + }, utils.logErrorCallback); res.send(); });