Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/molekilla/rutha-utils
Rutha Utilities
https://github.com/molekilla/rutha-utils
Last synced: about 1 month ago
JSON representation
Rutha Utilities
- Host: GitHub
- URL: https://github.com/molekilla/rutha-utils
- Owner: molekilla
- License: mit
- Created: 2014-08-03T18:16:24.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2017-10-20T20:32:53.000Z (about 7 years ago)
- Last Synced: 2024-10-12T23:26:54.494Z (2 months ago)
- Language: JavaScript
- Size: 13.7 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
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](https://www.npmjs.org/package/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](https://www.npmjs.org/package/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
```javascript
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