X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst.pm;h=55f49385226cd0224cc0477c3d5d816533415253;hb=08f767f2c689230a53c983cc925bef1651d4228f;hp=3de67b5650542b6fdf8784529435add1a0eeb86f;hpb=fc04b84548e23bf35da1e6bd39fd06c327a496dd;p=catagits%2FCatalyst-Runtime.git diff --git a/lib/Catalyst.pm b/lib/Catalyst.pm index 3de67b5..55f4938 100644 --- a/lib/Catalyst.pm +++ b/lib/Catalyst.pm @@ -43,7 +43,7 @@ our $DETACH = "catalyst_detach\n"; require Module::Pluggable::Fast; # Helper script generation -our $CATALYST_SCRIPT_GEN = 13; +our $CATALYST_SCRIPT_GEN = 22; __PACKAGE__->mk_classdata($_) for qw/components arguments dispatcher engine log dispatcher_class @@ -54,7 +54,7 @@ __PACKAGE__->engine_class('Catalyst::Engine::CGI'); __PACKAGE__->request_class('Catalyst::Request'); __PACKAGE__->response_class('Catalyst::Response'); -our $VERSION = '5.57'; +our $VERSION = '5.60'; sub import { my ( $class, @arguments ) = @_; @@ -184,43 +184,37 @@ they are loaded in exactly the order in which they appear. The following flags are supported: -=over 4 - -=item -Debug +=head2 -Debug Enables debug output. -=item -Engine +=head2 -Engine Forces Catalyst to use a specific engine. Omit the C prefix of the engine name, i.e.: use Catalyst qw/-Engine=CGI/; -=item -Home +=head2 -Home Forces Catalyst to use a specific home directory, e.g.: use Catalyst qw[-Home=/usr/sri]; -=item -Log +=head2 -Log Specifies log level. -=back - =head1 METHODS =head2 Information about the current request -=over 4 - -=item $c->action +=head2 $c->action Returns a L object for the current action, which stringifies to the action name. See L. -=item $c->namespace +=head2 $c->namespace Returns the namespace of the current action, i.e., the uri prefix corresponding to the controller of the current action. For example: @@ -228,22 +222,18 @@ corresponding to the controller of the current action. For example: # in Controller::Foo::Bar $c->namespace; # returns 'foo/bar'; -=item $c->request +=head2 $c->request -=item $c->req +=head2 $c->req Returns the current L object. See L. -=back - =head2 Processing and response to the current request -=over 4 - -=item $c->forward( $action [, \@arguments ] ) +=head2 $c->forward( $action [, \@arguments ] ) -=item $c->forward( $class, $method, [, \@arguments ] ) +=head2 $c->forward( $class, $method, [, \@arguments ] ) Forwards processing to a private action. If you give a class name but no method, C is called. You may also optionally pass arguments @@ -260,9 +250,9 @@ C<$c-Ereq-Eargs> will be restored to the previous values. sub forward { my $c = shift; $c->dispatcher->forward( $c, @_ ) } -=item $c->detach( $action [, \@arguments ] ) +=head2 $c->detach( $action [, \@arguments ] ) -=item $c->detach( $class, $method, [, \@arguments ] ) +=head2 $c->detach( $class, $method, [, \@arguments ] ) The same as C, but doesn't return. @@ -270,13 +260,15 @@ The same as C, but doesn't return. sub detach { my $c = shift; $c->dispatcher->detach( $c, @_ ) } -=item $c->error +=head2 $c->error -=item $c->error($error, ...) +=head2 $c->error($error, ...) -=item $c->error($arrayref) +=head2 $c->error($arrayref) -Returns an arrayref containing error messages. +Returns an arrayref containing error messages. If Catalyst encounters an +error while processing a request, it stores the error in $c->error. This +method should not be used to store non-fatal error messages. my @error = @{ $c->error }; @@ -284,7 +276,8 @@ Add a new error. $c->error('Something bad happened'); -Clear errors. +Clear errors. You probably don't want to clear the errors unless you are +implementing a custom error screen. $c->error(0); @@ -300,13 +293,13 @@ sub error { return $c->{error} || []; } -=item $c->response +=head2 $c->response -=item $c->res +=head2 $c->res Returns the current L object. -=item $c->stash +=head2 $c->stash Returns a hashref to the stash, which may be used to store data and pass it between components during a request. You can also set hash keys by @@ -334,19 +327,15 @@ sub stash { return $c->{stash}; } -=item $c->state +=head2 $c->state Contains the return value of the last executed action. -=back - =head2 Component Accessors -=over 4 - -=item $c->comp($name) +=head2 $c->comp($name) -=item $c->component($name) +=head2 $c->component($name) Gets a component object by name. This method is no longer recommended, unless you want to get a specific component by full @@ -388,7 +377,7 @@ sub component { return sort keys %{ $c->components }; } -=item $c->controller($name) +=head2 $c->controller($name) Gets a L instance by name. @@ -403,7 +392,7 @@ sub controller { return $c->comp("C::$name"); } -=item $c->model($name) +=head2 $c->model($name) Gets a L instance by name. @@ -418,7 +407,7 @@ sub model { return $c->comp("M::$name"); } -=item $c->view($name) +=head2 $c->view($name) Gets a L instance by name. @@ -433,19 +422,15 @@ sub view { return $c->comp("V::$name"); } -=back - =head2 Class data and helper classes -=over 4 - -=item $c->config +=head2 $c->config Returns or takes a hashref containing the application's configuration. __PACKAGE__->config({ db => 'dsn:SQLite:foo.db' }); -=item $c->debug +=head2 $c->debug Overload to enable debug messages (same as -Debug option). @@ -453,17 +438,17 @@ Overload to enable debug messages (same as -Debug option). sub debug { 0 } -=item $c->dispatcher +=head2 $c->dispatcher Returns the dispatcher instance. Stringifies to class name. See L. -=item $c->engine +=head2 $c->engine Returns the engine instance. Stringifies to the class name. See L. -=item $c->log +=head2 $c->log Returns the logging object instance. Unless it is already set, Catalyst sets this up with a L object. To use your own log class: @@ -476,13 +461,9 @@ L man page. =cut -=back - =head2 Utility methods -=over 4 - -=item $c->path_to(@path) +=head2 $c->path_to(@path) Merges C<@path> with C<$c-Econfig-E{home}> and returns a L object. @@ -500,7 +481,7 @@ sub path_to { else { return file( $c->config->{home}, @path ) } } -=item $c->plugin( $name, $class, @args ) +=head2 $c->plugin( $name, $class, @args ) Helper method for plugins. It creates a classdata accessor/mutator and loads and instantiates the given class. @@ -535,7 +516,7 @@ sub plugin { if $class->debug; } -=item MyApp->setup +=head2 MyApp->setup Initializes the dispatcher and engine, loads any plugins, and loads the model, view, and controller components. You may also specify an array @@ -597,8 +578,11 @@ sub setup { <<"EOF") if ( $ENV{CATALYST_SCRIPT_GEN} && ( $ENV{CATALYST_SCRIPT_GEN} < $Catalyst::CATALYST_SCRIPT_GEN ) ); You are running an old script! - Please update by running: - catalyst.pl -nonew -scripts $class + Please update by running (this will overwrite existing files): + catalyst.pl -force -scripts $class + + or (this will not overwrite existing files): + catalyst.pl -scripts $class EOF if ( $class->debug ) { @@ -664,7 +648,7 @@ EOF $class->log->_flush() if $class->log->can('_flush'); } -=item $c->uri_for( $path, [ @args ] ) +=head2 $c->uri_for( $path, [ @args ] ) Merges path with C<$c-Erequest-Ebase> for absolute uri's and with C<$c-Enamespace> for relative uri's, then returns a @@ -690,11 +674,14 @@ sub uri_for { # join args with '/', or a blank string my $args = ( scalar @args ? '/' . join( '/', @args ) : '' ); - return URI->new_abs( URI->new_abs( "$path$args", "$basepath$namespace" ), - $base )->canonical; + $args =~ s/^\/// unless $path; + my $res = + URI->new_abs( URI->new_abs( "$path$args", "$basepath$namespace" ), $base ) + ->canonical; + $res; } -=item $c->welcome_message +=head2 $c->welcome_message Returns the Catalyst welcome HTML page. @@ -839,32 +826,28 @@ perldoc setup_dispatcher +=head2 $c->setup_dispatcher Sets up dispatcher. @@ -1537,7 +1520,7 @@ sub setup_dispatcher { $class->dispatcher( $dispatcher->new ); } -=item $c->setup_engine +=head2 $c->setup_engine Sets up engine. @@ -1661,7 +1644,7 @@ qq/Couldn't load engine "$engine" (maybe you forgot to install it?), "$@"/ $class->engine( $engine->new ); } -=item $c->setup_home +=head2 $c->setup_home Sets up the home directory. @@ -1688,7 +1671,7 @@ sub setup_home { } } -=item $c->setup_log +=head2 $c->setup_log Sets up log. @@ -1715,7 +1698,7 @@ sub setup_log { } } -=item $c->setup_plugins +=head2 $c->setup_plugins Sets up plugins. @@ -1743,11 +1726,11 @@ sub setup_plugins { } } -=item $c->stack +=head2 $c->stack Returns the stack. -=item $c->write( $data ) +=head2 $c->write( $data ) Writes $data to the output stream. When using this method directly, you will need to manually set the C header to the length of @@ -1764,7 +1747,7 @@ sub write { return $c->engine->write( $c, @_ ); } -=item version +=head2 version Returns the Catalyst version number. Mostly useful for "powered by" messages in template systems. @@ -1773,8 +1756,6 @@ messages in template systems. sub version { return $Catalyst::VERSION } -=back - =head1 INTERNAL ACTIONS Catalyst uses internal actions like C<_DISPATCH>, C<_BEGIN>, C<_AUTO>, @@ -1864,23 +1845,21 @@ Wiki: =head1 SEE ALSO -=over 4 +=head2 L - All you need to start with Catalyst -=item L - The Catalyst Manual +=head2 L - The Catalyst Manual -=item L, L - Base classes for components +=head2 L, L - Base classes for components -=item L - Core engine +=head2 L - Core engine -=item L - Log class. +=head2 L - Log class. -=item L - Request object +=head2 L - Request object -=item L - Response object +=head2 L - Response object -=item L - The test suite. - -=back +=head2 L - The test suite. =head1 CREDITS @@ -1914,6 +1893,8 @@ David Kamholz David Naughton +Drew Taylor + Gary Ashton Jones Geoff Richards