Recently i started a project in Sails JS, what is a mvc Framework for node JS. This framework is quit new for me, but after some frustation and trial and error i start to like this framework.
For example, i wanted to create a simple cronjob in Sails, but the latest module from sails doesn’t work (https://www.npmjs.com/package/sails-hook-schedule).
I am using sails 0.12.3 btw..
So this is what i did.
Install node-schedule
Open your command line and type this npm –save install node-schedule
Create a crontab folder in the root
Add your cronjobs into the crontab folder
So create crontab/mytest.js in the crontab folder and paste your business logic in it like this:
module.exports = {
run : function(){
console.log(‘business logic running every minute’);
}
};
Create a crontab file in config/crontab.js
Paste this code in the crontab.js. What i am doing here is creating a method where i require my cronjob, finally i append the method to the jsonArray, so the config/bootstrap.js will execute the file.
module.exports.crontab = {
/*
* The asterisks in the key are equivalent to the
* schedule setting in crontab, i.e.
* minute hour day month day-of-week year
* so in the example below it will run every minute
*/
crons:function()
{
var jsonArray = [];
jsonArray.push({interval:’*/1 * * * * * ‘,method:’mytest’});
// add more cronjobs if you want like below
// but dont forget to add a new method…
//jsonArray.push({interval:’*/1 * * * * * ‘,method:’anothertest’});
return jsonArray;
},
// declare the method mytest
// and add it in the crons function
mytest: function(){
require(‘../crontab/mytest.js’).run();
}
/*
anothertest:function(){
require(‘../crontab/anothertest.js’).run();
}
*/
};
Open your config/bootstrap.js and add this code
module.exports.bootstrap = function(cb) {
_.extend(sails.hooks.http.app.locals, sails.config.http.locals);
// add the lines from here
// bootstrapping all the cronjobs in the crontab folder
var schedule = require(‘node-schedule’);
sails.config.crontab.crons().forEach(function(item){
schedule.scheduleJob(item.interval,sails.config.crontab[item.method]);
});
// It’s very important to trigger this callback method when you are finished
// with the bootstrap! (otherwise your server will never lift, since it’s waiting on the bootstrap)
cb();
};
Finally run sails l and you should see a message running every minute.
Thats it and good luck :):)