]> git.decadent.org.uk Git - maypole.git/blobdiff - lib/Maypole/Application.pm
implement -Init flag in Mp::Application - rt #14123
[maypole.git] / lib / Maypole / Application.pm
index f05379d87c8ab8035118aac9ff6fb8dc44b86d62..a0e49bc5fbacf33164441c4ed5c08e769dbe8ec9 100644 (file)
@@ -30,10 +30,12 @@ sub import {
     push @ISA, $frontend unless __PACKAGE__->isa( $frontend );
 
     my $autosetup=0;
+    my $autoinit=0;
     my @plugin_modules;
     {
         foreach (@plugins) {
             if    (/^\-Setup$/) { $autosetup++; }
+            elsif (/^\-Init$/)  { $autoinit++ }
             elsif (/^\-Debug(\d*)$/) {
                 my $d = $1 || 1;
                 no strict 'refs';
@@ -59,6 +61,7 @@ sub import {
     $caller->config(Maypole::Config->new);
     $caller->config->masonx({}) if $masonx;
     $caller->setup() if $autosetup;
+    $caller->init() if $autosetup && $autoinit;
 }
 
 1;
@@ -88,7 +91,7 @@ So Maypole::Plugin::Config::YAML becomes Config::YAML.
 
     use Maypole::Application qw(Config::YAML);
 
-You can also set special flags like -Setup and -Debug.
+You can also set special flags like -Setup, -Debug and -Init.
 
     use Maypole::Application qw(-Debug Config::YAML -Setup);
 
@@ -108,6 +111,25 @@ Note that no options are passed to C<setup()>. You must ensure that the
 required model config parameters are set in C<MyApp-E<gt>config>. See
 L<Maypole::Config> for more information.
 
+=head2 -Init
+
+    use Maypole::Application qw(-Setup -Init);
+    
+is equivalent to
+
+    use Maypole::Application;
+    MyApp->setup;
+    MyApp->init;
+    
+Note that the C<-Setup> flag is required for the C<-Init> flag to work.
+
+In persistent environments (e.g. C<mod_perl>), it is useful to call C<init> 
+once in the parent server, rather than at the beginning of the first request
+to each child server, in order to share the view code loaded during C<init>. 
+Note that you must supply all the config data to your app before calling 
+C<setup> and C<init>, probably by using one of the C<Maypole::Plugin::Config::*> 
+plugins.
+
 =head2 -Debug
 
     use Maypole::Application qw(-Debug);