Updated Manifest
[catagits/Catalyst-Runtime.git] / lib / Catalyst.pm
index aaa8624..71ce8cc 100644 (file)
@@ -38,14 +38,12 @@ our $DETACH    = "catalyst_detach\n";
 require Module::Pluggable::Fast;
 
 # Helper script generation
-our $CATALYST_SCRIPT_GEN = 8;
+our $CATALYST_SCRIPT_GEN = 10;
 
 __PACKAGE__->mk_classdata($_)
   for qw/components arguments dispatcher engine log/;
 
-our $VERSION = '5.49_01';
-
-sub version { return $Catalyst::VERSION }
+our $VERSION = '5.49_02';
 
 sub import {
     my ( $class, @arguments ) = @_;
@@ -428,6 +426,7 @@ sub uri_for {
     # massage match, empty if absolute path
     $match =~ s/^\///;
     $match .= '/' if $match;
+    $path ||= '';
     $match = '' if $path =~ /^\//;
     $path =~ s/^\///;
 
@@ -696,7 +695,7 @@ perldoc <a href="http://cpansearch.perl.org/dist/Catalyst/lib/Catalyst/Manual.po
                      </li>
                  </ul>
                  <h2>In conclusion</h2>
-                 <p>The Catalyst team hope you will enjoy using Catalyst as much 
+                 <p>The Catalyst team hopes you will enjoy using Catalyst as much 
                     as we enjoyed making it. Please contact us if you have ideas
                     for improvement or other feedback.</p>
              </div>
@@ -751,6 +750,18 @@ Dispatch request to actions.
 
 sub dispatch { my $c = shift; $c->dispatcher->dispatch( $c, @_ ) }
 
+=item dump_these
+
+Returns a list of 2-element array references (name, structure) pairs that will
+be dumped on the error page in debug mode.
+
+=cut
+
+sub dump_these {
+    my $c = shift;
+    [ Request => $c->req ], [ Response => $c->res ], [ Stash => $c->stash ],;
+}
+
 =item $c->execute($class, $coderef)
 
 Execute a coderef in given class and catch exceptions.
@@ -786,7 +797,11 @@ sub execute {
         {
             my ( $elapsed, @state ) =
               $c->benchmark( $code, $class, $c, @{ $c->req->args } );
-            push @{ $c->{stats} }, [ $action, sprintf( '%fs', $elapsed ) ];
+            unless ( ( $code->name =~ /^_.*/ )
+                && ( !$c->config->{show_internal_actions} ) )
+            {
+                push @{ $c->{stats} }, [ $action, sprintf( '%fs', $elapsed ) ];
+            }
             $c->state(@state);
         }
         else {
@@ -921,7 +936,7 @@ Finalize uploads.  Cleans up any temporary files.
 
 sub finalize_uploads { my $c = shift; $c->engine->finalize_uploads( $c, @_ ) }
 
-=item $c->get_action( $action, $namespace, $inherit )
+=item $c->get_action( $action, $namespace )
 
 Get an action in a given namespace.
 
@@ -929,6 +944,14 @@ Get an action in a given namespace.
 
 sub get_action { my $c = shift; $c->dispatcher->get_action( $c, @_ ) }
 
+=item $c->get_actions( $action, $namespace )
+
+Get all actions of a given name in a namespace and all base namespaces.
+
+=cut
+
+sub get_actions { my $c = shift; $c->dispatcher->get_actions( $c, @_ ) }
+
 =item handle_request( $class, @arguments )
 
 Handles the request.
@@ -1463,6 +1486,38 @@ qq/Couldn't load engine "$engine" (maybe you forgot to install it?), "$@"/
         );
     }
 
+    # check for old engines that are no longer compatible
+    my $old_engine;
+    if ( $engine->isa('Catalyst::Engine::Apache')
+        && !Catalyst::Engine::Apache->VERSION )
+    {
+        $old_engine = 1;
+    }
+
+    elsif ( $engine->isa('Catalyst::Engine::Server::Base')
+        && Catalyst::Engine::Server->VERSION le '0.02' )
+    {
+        $old_engine = 1;
+    }
+
+    elsif ($engine->isa('Catalyst::Engine::HTTP::POE')
+        && $engine->VERSION eq '0.01' )
+    {
+        $old_engine = 1;
+    }
+
+    elsif ($engine->isa('Catalyst::Engine::Zeus')
+        && $engine->VERSION eq '0.01' )
+    {
+        $old_engine = 1;
+    }
+
+    if ($old_engine) {
+        Catalyst::Exception->throw( message =>
+              qq/Engine "$engine" is not supported by this version of Catalyst/
+        );
+    }
+
     # engine instance
     $class->engine( $engine->new );
 }
@@ -1553,8 +1608,27 @@ sub write {
     return $c->engine->write( $c, @_ );
 }
 
+=item version
+
+Returns the Catalyst version number. mostly useful for powered by messages
+in template systems.
+
+=cut
+
+sub version { return $Catalyst::VERSION }
+
 =back
 
+=head1 INTERNAL ACTIONS
+
+Catalyst uses internal actions like C<_DISPATCH>, C<_BEGIN>, C<_AUTO>
+C<_ACTION> and C<_END>, these are by default not shown in the private
+action table.
+
+But you can deactivate this with a config parameter.
+
+    MyApp->config->{show_internal_actions} = 1;
+
 =head1 CASE SENSITIVITY
 
 By default Catalyst is not case sensitive, so C<MyApp::C::FOO::Bar> becomes
@@ -1698,6 +1772,8 @@ Matt S Trout
 
 Robert Sedlacek
 
+Sam Vilain
+
 Tatsuhiko Miyagawa
 
 Ulf Edvinsson