sails-hook-panic-mode
v0.1.3
Published
Sails JS hook to supply a simple panic mode for sites.
Downloads
83
Readme
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
Parameter | Type | Default | Details
-------------- | ------------------- | ------- | :---------------------------------:
view | ((string)) | none | View 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)) | none | If 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)) | none | If 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();
}
}
}