Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer
 
PerlMonks  

Odd behavior when trying to preload Plack apps under mod_perl

by cLive ;-) (Prior)
on Sep 08, 2022 at 15:04 UTC ( #11146765=perlquestion: print w/replies, xml ) Need Help??

cLive ;-) has asked for the wisdom of the Perl Monks concerning the following question:

For "reasons", I'm loading a few Plack apps under mod_perl via Plack::Handler::Apache2. During a recent tidy up, I've been moving from one vhost entry per app, to a single vhost entry that uses Plack::App::URLMap, and adding an explicit load of all app modules pre-fork.

Loader app look like this

# find all modules in the apps' directories, and load them via Module: +:Load (so they are in mod_perl parent) # create URL mappings of the apps # %app_modules has app names as keys, and app namespaces as lavues APP: foreach my $app_name (keys %$app_modules) { my $uri_path = "/$app_name"; my $app_namespace = $app_modules->{$app_name}; $urlmap->mount( $uri_path => ${app_namespace}->to_app ); } $urlmap->to_app;

For two example Dancer apps like this, it works as expected:

package App1; use Dancer2; our $VERSION = '0.1'; get '/' => sub { return "THIS IS ROOT IN APP 1"; }; true;
But when I switch to the proper apps, I hit a problem. In the app, I have the code: use My::App qw(exported_method);

That app does not appear to load. I see no error thrown.

however, if I change the line to My::App->import('exported_method'); it works as expected.

I've been scratching my head over this for a few days now, and wondered if anyone has hit anything like this before, or has any pointers on where I should be digging to work this one out.

It looks like things start behaving if I remove the Module::Load code and don't preload everything (but loading the app this way doesn't preload all the app's dependancies).

Replies are listed 'Best First'.
Re: Odd behavior when trying to preload Plack apps under mod_perl
by Anonymous Monk on Sep 09, 2022 at 02:06 UTC
    Minimal code to reproduce error, this is the place to start

        Thanks for that insight. I missed it!

        Unfortunately I can't spin the apps up separately because they need to run alongside mod_perl to expose code from the existing app, but this helps.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlquestion [id://11146765]
Approved by davies
Front-paged by Corion
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others scrutinizing the Monastery: (2)
As of 2023-04-02 09:19 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found

    Notices?