what actually happens is: -- drex.require() creates a copy of the updated module with the new name and require() this new file. so, as far as node is concerned - it is a totally different module. -- all the sessions which already passed throught the drex.require() code already using the specific version of your module - the version which was there at the time when the session was created.
so, as you can see - fairly primitive, but with far reaching consequences. drex totally changed the way i architect and design my node apps. now i have the luxury to deal with my modules like with the web pages - analogy is very close, actually: like in the case of the browser, the html/js code which has been downloaded when the page has been loaded stays in the browser, even if the copy of the code on the server already changed. to understand my approach better and see it in action just "npm install drex" and run app.js from example folder. good luck! On Friday, February 1, 2013 10:39:50 AM UTC-8, Mark Hahn wrote: > > I'm not sure how this could work. When switching modules, your app will > mostly link to the old module. I don't see how the app could switch to the > new module without restart. > > Example: > > mod = require './mod' > mod.foo bar > > How would the mod variable get the new module? > > Also, you would have to be lucky to have your old module and > new module be compatible. > > > On Thu, Jan 31, 2013 at 1:26 PM, Yury Bogomolsky > <[email protected]<javascript:> > > wrote: > >> https://github.com/yuryb/drex >> >> drex is watching a module for updates and cleanly re-requires the module >> after the update. New code is being require()d as if the new code is a >> totally different module, so require.cache is not a problem. >> >> var drex = require('drex'); >> ... node code node code node code ... >> // here goes my frea[ky/quently updated] piece of code, which lives in a js >> file called mucode.js:drex.require('./mucode.js', function(mucode){ >> // at this point my mucode.js has been require()d, just like this: >> // var mucode = require('./mucode.js'); >> // the code of the required module is the LATEST UPDATE TO mucode.js >> mucode.muNewFunc(); }); >> >> -- >> -- >> Job Board: http://jobs.nodejs.org/ >> Posting guidelines: >> https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines >> You received this message because you are subscribed to the Google >> Groups "nodejs" group. >> To post to this group, send email to [email protected]<javascript:> >> To unsubscribe from this group, send email to >> [email protected] <javascript:> >> For more options, visit this group at >> http://groups.google.com/group/nodejs?hl=en?hl=en >> >> --- >> You received this message because you are subscribed to the Google Groups >> "nodejs" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected] <javascript:>. >> For more options, visit https://groups.google.com/groups/opt_out. >> >> >> > > -- -- Job Board: http://jobs.nodejs.org/ Posting guidelines: https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines You received this message because you are subscribed to the Google Groups "nodejs" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/nodejs?hl=en?hl=en --- You received this message because you are subscribed to the Google Groups "nodejs" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/groups/opt_out.
