open-index/open-npm huggingface dataset:
npm package: @gitterhq/env
Description: Gitter Base Environment Module
Author: Andrew Newdigate
Latest version: 0.48.0

gitter-env
==========

Deploying your node app? Use this to:

1. stop your app from crashing when redis fails over
2. keep servers alive by rotating logs
3. publish errors that wake people up in the night
4. publish stats that help make decisions
5. use different env configs so that you app can travel to new environments


## Using gitter-env

Firstly you need to create a singleton instance inside your application. Call the module something like env. 
It will need to reference the location of the configuration files, like this:

```
var gitterEnv = require('gitter-env');
var path = require('path');

/* Create a singleton environment */
module.exports = gitterEnv.create(path.join(__dirname, '..', '..', 'config'));

```

Once you've got your `env` instance, here are some things you can do with it

## Logging

`env.logger` looks a lot like [winston](https://github.com/flatiron/winston). Use it for logging:

* `logger.verbose(message, meta)`
* `logger.info(message, meta)`
* `logger.warn(message, meta)`
* `logger.error(message, meta)`

## Configuration

`env.conf` looks a lot like [nconf](https://github.com/flatiron/nconf). Use it for configuration:

* `conf.get('some:variable')`

## Error Reporter

`env.errorReporter` will send your errors to sentry. Use it for logging serious problems:

* `errorReporter(err, { some: 'meta', information: 1 })`

## Redis Client

`env.redis` will provide you with a singleton instance of a redis client or a new instance. It will use Redis Sentinel it it's configured.

Example configuration:
```json
{
  "redisDb": 1,
  "sentinel": {
    "master-name": "test-master",
    "hosts": ["localhost:46379"]
  },
  clientOpts: {
    "return_buffers": true
  }
}
```

* `env.redis.getClient()` - returns the main singleton Redis client.
* `env.redis.createClient([options])` - returns a new Redis client. Uses `redis` config by default.
* `env.redis.quitClient()` - closes a Redis client (don't do this with the main singleton client)

## Statistics

`env.stats` will send statistics to Datadog, Cube, and other places.

* `env.stats.event('name')` - increment a counter
* `env.stats.eventHF('name', [count], [frequency])` - increment a high frequency counter
* `env.stats.gaugeHF('name', [value], [frequency])` - update a high frequency gauge
* `env.stats.responseTime('name', duration)` - track a response time

## Error Handling

* `env.installUncaughtExceptionHandler` - will install a graceful shutdown handler on uncaught exceptions
* `env.domainWrap(function() { /* server */ });` - will do the same inside the function


## Middlewares

* `env.middlewares.errorHandler` - a basic error handling middleware
* `env.middlewares.accessLogger` - access logging with response time stats
npm package: @gitterhq/faye-redis
Description: Redis backend engine for Faye, as used by Gitter
Author: James Coglan
Latest version: 0.4.4

# faye-redis [![Build Status](https://secure.travis-ci.org/faye/faye-redis-node.svg)](http://travis-ci.org/faye/faye-redis-node)

This plugin provides a Redis-based backend for the
[Faye](http://faye.jcoglan.com) messaging server. It allows a single Faye
service to be distributed across many front-end web servers by storing state and
routing messages through a [Redis](http://redis.io) database server.


## Usage

Pass in the engine and any settings you need when setting up your Faye server.

```js
var faye  = require('faye'),
    redis = require('faye-redis'),
    http  = require('http');

var server = http.createServer();

var bayeux = new faye.NodeAdapter({
  mount:    '/',
  timeout:  25,
  engine: {
    type:   redis,
    host:   'redis.example.com',
    // more options
  }
});

bayeux.attach(server);
server.listen(8000);
```

The full list of settings is as follows.

* <b>`host`</b> - hostname of your Redis instance
* <b>`port`</b> - port number, default is `6379`
* <b>`password`</b> - password, if `requirepass` is set
* <b>`database`</b> - number of database to use, default is `0`
* <b>`namespace`</b> - prefix applied to all keys, default is `''`
* <b>`socket`</b> - path to Unix socket if `unixsocket` is set


## License

(The MIT License)

Copyright (c) 2011-2013 James Coglan

Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the 'Software'), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.