in reply to mod_perl devlopment process

maverick has been working on a "solution" for this for quite some time now. By "solution" i mean that the ability to make changes to a mod_perl module and see those changes without having to restart the webserver is just one feature of what he is building. The project is called SiteVoodoo and as soon as he, myself, and msemich can find the time we will package the whole kit and kaboodle up (possibly for CPAN and/or Freshmeat). Unfortunately for the public, each of us already knows how to create powerful websites with SiteVoodoo, so we have no flame under our seats to motivate us to make it user-friendly. ;)

In the meantime, you can get a tar ball of the source code here. (And here is an example site that runs on SiteVoodoo. Note that it uses only a few of SiteVoodoo's features.) Hopefully maverick will come along and help explain how module reloading works, but i can tell you that it is no trivial matter. First, the notion of be able do such in a production environment is asking for trouble (performance-wise and possibly security-wise), so Voodoo defines a 'devel' mode (via a configuration file located in Apache's conf dif) which allows immediate changes in the code to show up without restarting the web server. Each of us (mav, semich, and myself) tends to work with at least two machines, one for development and one for production. The production machine has a different config file than the development machine, but the code base for the two machines is mostly identical (the difference being any new changes or bug fixes on the devel box).

That's really about all that i can tell you about how module reloading works in Voodoo (and that was not a lot), but i can show you how to install Voodoo, and i assure you, it's really cool stuff! I did grep for Apache::Reload in Voodoo's source and found no matches ... methinks maverick might have re-invented a wheel. ;)

Oh yeah, almost forgot ... the mod_perl Developer's Cookbook has been an invaluable addition to my library. The relevent recipe is 8.1, Recognizing Handler Changes, and the recommended solution is to use Apache::Reload instead of tampering directly with %INC.

jeffa

Random Voodoo Features:
  • Comment on (jeffa) Re: mod_perl devlopment process