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:
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);package App1; use Dancer2; our $VERSION = '0.1'; get '/' => sub { return "THIS IS ROOT IN APP 1"; }; true;
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 | |
by Anonymous Monk on Sep 09, 2022 at 02:23 UTC | |
by cLive ;-) (Prior) on Sep 13, 2022 at 22:03 UTC |