0.1.3 • Published 7 years ago

sails-hook-panic-mode v0.1.3

Weekly downloads
17
License
MIT
Repository
github
Last release
7 years ago

sails-hook-panic-mode

Sails JS hook to provide a simple "panic mode" for an app. In panic mode, all requests receive an "under maintenance" page or message in response.

Installation

npm install sails-hook-panic-mode

Usage

From within your Sails app, call sails.hooks['panic-mode'].panic() to increase the panic level. Call sails.hooks['panic-mode'].chill() to decrease the panic level. Whenever the panic level is > 0, the site will operate in panic mode, so if you call panic() multiple times, you'll need to call chill() an equal number of times to get the site out of panic mode. Call sails.hooks['panic-mode'].reset() to instantly set the panic level to zero.

Configuration

ParameterTypeDefaultDetails
view((string))noneView to display in panic mode. If not provided, the hook will use the views/panic.ejs view if your app has one. Otherwise, it will show a default maintenance page. Set to false to display text or JSON instead of a view (see text_message and json_message options)
viewLocals((dictionary)){}Locals and options to use with your panic view. You can use this to change up the message per environment, or to provide a different layout.
status((number))503 (service unavailable)Status code to respond with in panic mode.
json_message((json))noneIf view is set to false and json_message is provided, the res.json method will be used with that value for the response in panic mode.
text_message((string))noneIf view is set to false and text_message is provided (and json_message is not provided), the res.send method will be used with that value for the response in panic mode.

Example

A great use of panic mode is to handle temporary disconnections from a Redis session or socket store in Sails v1+.

// [your-sails-app]/config/session.js
module.exports = {
  adapter: 'connect-redis',
  onRedisDisconnect: function() {
    sails.hooks['panic-mode'].panic();
  },
  onRedisReconnect: function() {
    sails.hooks['panic-mode'].chill();
  }
}

// [your-sails-app]/config/sockets.js
module.exports = {
  adapter: 'socket.io-redis',
  adapterOptions: {
    onRedisDisconnect: function() {
      sails.hooks['panic-mode'].panic();
    },
    onRedisReconnect: function() {
      sails.hooks['panic-mode'].chill();
    }
  }
}
0.1.3

7 years ago

0.1.2

7 years ago

0.1.1

7 years ago

0.1.0

7 years ago