You are viewing a plain text version of this content. The canonical link for it is here.
Posted to test-dev@httpd.apache.org by Jim Martinez <jj...@bigbigorg.org> on 2005/02/09 18:36:55 UTC

preload modules at sever startup

Hi,

I'm looking for some suggestions for a library problem with Apache::Test,
which I'm using to develop a web application.

Hope this is the place to ask.

Using Apache 1 and Mod perl 1, how can I preload perl modules at server
startup?

My extra.conf.in contains something like this:

PerlModule Foo::Bar
<Location /a >
  SetHandler perl-script
  PerlHandler Foo::Bar::myhandler
</Location>

"make test" fails.  The apache server won't start because it can't find
Foo::Bar, needed by the line "PerlModule Foo::Bar"

In the link below, I read about "PerlSwitches -I@ServerRoot@/../lib"

http://perl.apache.org/docs/general/testing/testing.html#Extending_Configuration_Setup

Is PerlSwitches for MP2 only?

In the link above I'd call the root development directory
/path/to/Apache-Amazing, just so that you understand what I mean by root
development directory.  Here is a listing of the root development
directory:

CVS/  Changes  MANIFEST  MANIFEST.OLD  MANIFEST_maybe  META.yml  Makefile  
Makefile.PL  README  blib/  docs/  lib/  pm_to_blib  t/

Of course Foo::Bar is in lib/Foo/Bar.pm (until Apache::Test moves it to
blib/ )

If I set PERL5LIB to the root development directory, the "make test" runs
fine (well it shows me my programming errors is what I mean).

Should I create a starup.pl file that does something like:

BEGIN { use lib @ServerRoot@../lib }

Then and add lines to extra.conf.in to run startup.pl.

Or is there a better way?  A hard coded path won't work in my situation
(which is why I use the @ServerRoot@).

Thanks in advance,
Jim




Re: preload modules at sever startup

Posted by Geoffrey Young <ge...@modperlcookbook.org>.

Jim Martinez wrote:
> Hi,
> 
> I'm looking for some suggestions for a library problem with Apache::Test,
> which I'm using to develop a web application.
> 
> Hope this is the place to ask.

better test-dev@perl.apache.org now, but that list was just created yesterday :)

> 
> Using Apache 1 and Mod perl 1, how can I preload perl modules at server
> startup?
> 
> My extra.conf.in contains something like this:
> 
> PerlModule Foo::Bar
> <Location /a >
>   SetHandler perl-script
>   PerlHandler Foo::Bar::myhandler
> </Location>
> 
> "make test" fails.  The apache server won't start because it can't find
> Foo::Bar, needed by the line "PerlModule Foo::Bar"

if you can move it to t/lib/Foo/Bar.pm Apache-Test will pick it up.

> 
> In the link below, I read about "PerlSwitches -I@ServerRoot@/../lib"
> 
> http://perl.apache.org/docs/general/testing/testing.html#Extending_Configuration_Setup
> 
> Is PerlSwitches for MP2 only?

yes.  an equivalent in mp1 might be to do this in extra.conf.in

<Perl>
  use lib qw(@ServerRoot@/../lib)
</Perl>

or without the <Perl> sections from modperl_extra.pl.in, which is equivalent
to startup.pl but with @var@ substitution.  you can use modperl_extra.pl if
you don't need substitution.

keep in mind that if you go this route you will probably need to change
extra.conf.in to extra.last.conf.in so that it is loaded _after_ your
startup.pl.  see the bottom of the generated httpd.conf to see what I mean.

> 
> In the link above I'd call the root development directory
> /path/to/Apache-Amazing, just so that you understand what I mean by root
> development directory.  Here is a listing of the root development
> directory:
> 
> CVS/  Changes  MANIFEST  MANIFEST.OLD  MANIFEST_maybe  META.yml  Makefile  
> Makefile.PL  README  blib/  docs/  lib/  pm_to_blib  t/
> 
> Of course Foo::Bar is in lib/Foo/Bar.pm (until Apache::Test moves it to
> blib/ )
> 
> If I set PERL5LIB to the root development directory, the "make test" runs
> fine (well it shows me my programming errors is what I mean).
> 
> Should I create a starup.pl file that does something like:
> 
> BEGIN { use lib @ServerRoot@../lib }
> 
> Then and add lines to extra.conf.in to run startup.pl.
> 
> Or is there a better way?  A hard coded path won't work in my situation
> (which is why I use the @ServerRoot@).

no, that's the idea.  you just need to use the magic files :)

HTH

--Geoff