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