]> git.decadent.org.uk Git - maypole.git/commitdiff
implement -Init flag in Mp::Application - rt #14123
authorDavid Baird <cpan.zerofive@googlemail.com>
Sat, 20 Aug 2005 13:00:19 +0000 (13:00 +0000)
committerDavid Baird <cpan.zerofive@googlemail.com>
Sat, 20 Aug 2005 13:00:19 +0000 (13:00 +0000)
git-svn-id: http://svn.maypole.perl.org/Maypole/trunk@375 48953598-375a-da11-a14b-00016c27c3ee

Changes
lib/Maypole/Application.pm

diff --git a/Changes b/Changes
index aad9d2846d97a4ac013d44fed79467027afedd27..9872249504a536715caa8b80ae5978aadd77a2a7 100644 (file)
--- a/Changes
+++ b/Changes
@@ -10,6 +10,7 @@ For information about current developments and future releases, see:
     Simplified Net::Amazon example (bug 14073)
     Apache2 fix in Apache::MVC (bug 13888)
     Maypole::Session::generate_unique_id() now returns the id (bug 14124)
+    Implement -Init flag in Mp::Application (wishlist 14123)
 
 2.10 Tue 19 Jul 2005
     Multiple Template Paths added ( http://rt.cpan.org/NoAuth/Bug.html?id=13447 )
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);