1.1.0 • Published 9 years ago

rutha-utils v1.1.0

Weekly downloads
3
License
MIT
Repository
github
Last release
9 years ago

rutha-utils

Rutha Utilities for Rutha Dev Stack

Contains plug and play wrappers for nconf, winston and mongoose. Just that. No magic.

RuthaUtils.Config

Uses nconf

Call utils.Config.get('key') to read config attributes.

RuthaUtils config feature toggles

config.isFeatureEnabled(key)

Where key is defined in a _featureToggles section

RuthaUtils.Logger

Uses winston

How to use

Install from npm

npm install rutha-utils

Configure

From RuthaUtils, use any of these three features:

createConfig to get the nconf instance. To load an environment, call config.load() or config.load(env) createLogger to get the winston instance

Mongoose Utils

Add require require('rutha-utils/mongoose').

  • bindEvents(mongooseClient) to display mongoose events
  • bindModels(opts{mongooseClient, modelsPath}) to bind models
Rutha stack HapiJS server example
var Hapi = require('hapi');
var debug = require('debug')('api:main');
var RuthaUtils = require('rutha-utils');
var MongooseHandler = require('rutha-utils/mongoose');

// nconf config
var config = RuthaUtils.createConfig({
  path: {
    config: __dirname + '/../../config'
  }
}).load();
 
// winston logger
var logger = RuthaUtils.createLogger({
  filename: config.get('logger:filename'),
  level: config.get('logger:level')
});
 
// Instantiate Mongoose
var mongooseClient = Mongoose.connect(config.get('mongodb:connectionString'));

// Bind events
MongooseHandler.bindEvents(mongooseClient);

// Bind models
MongooseHandler.bindModels({
    mongoose: mongooseClient,
    modelsPath: __dirname + '/../models'
});

// Create a server with a host and port
var server = module.exports = Hapi.createServer(config.get('apiServer:host'), config.get('apiServer:port'));
 
// health check
server.route({
  method: 'GET',
  path: '/api/health',
  handler: function(req, reply) {
    reply('OK');
  }
});
 
// Dependencies
server.pack.app = {
  mongoose: mongooseClient,
  config: config,
  logger: logger
};
 
debug('Set config and logger dependencies');
 
var controllers = [
  {
    plugin: require('lout'),
    options:
    {
      endpoint: '/api/docs'
    }
  },
  {
    plugin: require('../controllers/users/index'),
  }
];
 
  server.pack.register(controllers,
   {
     route: {
       prefix: '/api'
     }
   }, function() {
    if (!module.parent) {
      server.start(function () {
        console.log('Server started at port ' + server.info.port);
      });
    }
  });

Changelog

  • 1.1.0: added feature toggles
  • 1.0.0: Fixed config environment issue, use load. Deprecated Mongoose Client, use new Mongoose utils

License

MIT

1.1.0

9 years ago

1.0.0

10 years ago

0.3.3

10 years ago

0.3.2

10 years ago

0.3.1

10 years ago

0.3.0

10 years ago

0.2.1

10 years ago

0.2.0

10 years ago

0.1.0

10 years ago