X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FEngine.pm;h=27dfb3d80cf2d3b5d9ce1243d740d237a458cdef;hb=1a80619d839bc8dd6321648d8140a795bf85025e;hp=98a1f922b82802fef710505c85720215e2518990;hpb=6372237c9bd3714b1c8940503ec89878fc27a3e1;p=catagits%2FCatalyst-Runtime.git diff --git a/lib/Catalyst/Engine.pm b/lib/Catalyst/Engine.pm index 98a1f92..27dfb3d 100644 --- a/lib/Catalyst/Engine.pm +++ b/lib/Catalyst/Engine.pm @@ -250,7 +250,7 @@ sub finalize_output { } Forward processing to a private action or a method from a class. If you define a class without method it will default to process(). - $c->forward('foo'); + $c->forward('/foo'); $c->forward('index'); $c->forward(qw/MyApp::Model::CDBI::Foo do_stuff/); $c->forward('MyApp::View::TT'); @@ -266,7 +266,7 @@ sub forward { } my $caller = caller(0); my $namespace = '/'; - if ( $command =~ /^\/$/ ) { + if ( $command =~ /^\// ) { $command =~ /^(.*)\/(\w+)$/; $namespace = $1 || '/'; $command = $2; @@ -444,8 +444,8 @@ sub prepare { } $c->prepare_request($r); $c->prepare_path; - $c->prepare_cookies; $c->prepare_headers; + $c->prepare_cookies; $c->prepare_connection; my $method = $c->req->method || ''; my $path = $c->req->path || ''; @@ -689,6 +689,7 @@ sub set_action { $path = $1; $absolute = 1; } + $absolute = 1 if $flags{global}; my $name = $absolute ? $path : "$prefix/$path"; $c->actions->{plain}->{$name} = [ $namespace, $code ]; $c->log->debug(qq|Public "/$name" is "/$forward"|) if $c->debug; @@ -808,9 +809,11 @@ sub _prefix { sub _class2prefix { my $class = shift || ''; - $class =~ /^.*::([MVC]|Model|View|Controller)?::(.*)$/; - my $prefix = lc $2 || ''; - $prefix =~ s/\:\:/\//g; + my $prefix; + if ($class =~ /^.*::([MVC]|Model|View|Controller)?::(.*)$/) { + $prefix = lc $2; + $prefix =~ s/\:\:/\//g; + } return $prefix; }