> I'm currently a developer for an on-line publication using Apache /
> mod_perl / Mason.  We currently have about six developers working on the
> project and I have been running into problems with concurrent work on the
> Perl libraries that power our site.
> 
> We use CVS to manage revisions, but the only way for a developer to see if
> their code is working is to run it on our webserver.  However, mod_perl's
> very purpose is to keep one copy of your modules loaded from the
> start.  StatINC addresses this problem to a certain extent, but it fails
> when you have multiple versions of a Perl module that you want to load
> depending on which user is requesting.
> 
> I sort of got around this by modifying my Mason handler to examine the
> requested URI ( ex. /dev/user_name/blah.html ) and loading the appropriate
> module for that user.  Basically, this involved modifying the @INC
> paths in the handler, requiring the modules, and then calling
> the StatINC handler sub to reload any modified modules.  This sort
> of screams hack and it never worked that well.  Processes would
> load the proper module for one user, and then use that same module
> to serve another user who was looking for his own modules.  Chaos
> ensued...
> 
> I have a few ideas as to what I should try next.  Perhaps limiting
> RequestsPerChild to 1, such that libraries don't get reused?  I don't know
> what the ramifications of this are.
> 
> Short of running a webserver for each user (a bad solution in my
> opinion) does anyone have ideas?
>

you can update your httpd.conf to vary the port number based on
who is starting the thing.  this gives you something like:

        <perl>
        ...
        %portlist = qw( jow 8081 bloe 8082 john 8083 doe 8084 );

        $Port = $portlist{$ENV{LOGNAME}} or die "no port for $ENV{$LOGNAME}";

to check out a new version just bounce your copy of the
server and keep going.  normal cycle looks something like

        cvs -q update -d;
        bounce;

try it, edit thing, keep going.  if you reach a point where
something works use cvs commit.

-- 
 Steven Lembark                                   2930 W. Palmer St.
                                                 Chicago, IL  60647
 [EMAIL PROTECTED]                                   800-762-1582

Reply via email to