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).
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
|
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.
|
|