2012.07.23 achamaro
はい、タイトル下手くそですね。
nodeではプロセスへのシグナルも監視できるので
それを利用したいと思います。
var fs = require('fs') , http = require('http') , httpServer = http.createServer(onRequest); function onRequest(req, res) { res.end(require('./test').run()); } fs.writeFileSync(__dirname + '/pid.txt', process.pid); process.on('SIGUSR1', function(){ for (var key in require.cache) { delete require.cache[ key ]; } }); httpServer.listen(8080);server.js実行時のプロセスIDをpid.txtに書き出しておきます。
exports.run = function(){ return 'こんにちわ'; }
node server.jsで起動し、http://localhost:8080へ接続してみます。
exports.run = function(){ return 'こんばんわ'; }test.jsを更新、保存しても一度requireされたtest.jsはキャッシュされているので
cat pid.txt | xargs kill -SIGUSR1これで、仕込んでおいたキャッシュクリア処理が動くので