Updated Intro.pod
[catagits/Catalyst-Runtime.git] / README
diff --git a/README b/README
index 5aa8638..387806f 100644 (file)
--- a/README
+++ b/README
@@ -7,15 +7,15 @@ SYNOPSIS
         cd MyApp
 
         # add models, views, controllers
-        script/create.pl model Something
-        script/create.pl view Stuff
-        script/create.pl controller Yada
+        script/myapp_create.pl model Something
+        script/myapp_create.pl view Stuff
+        script/myapp_create.pl controller Yada
 
         # built in testserver
-        script/server.pl
+        script/myapp_server.pl
 
         # command line interface
-        script/test.pl /yada
+        script/myapp_test.pl /yada
 
         use Catalyst;
 
@@ -42,9 +42,6 @@ SYNOPSIS
     See also Catalyst::Manual::Intro
 
 DESCRIPTION
-    Catalyst is based upon Maypole, which you should consider for smaller
-    projects.
-
     The key concept of Catalyst is DRY (Don't Repeat Yourself).
 
     See Catalyst::Manual for more documentation.
@@ -55,7 +52,7 @@ DESCRIPTION
 
         use Catalyst 'My::Module';
 
-    Special flags like -Debug and -Engine can also be specifed as arguments
+    Special flags like -Debug and -Engine can also be specified as arguments
     when Catalyst is loaded:
 
         use Catalyst qw/-Debug My::Module/;
@@ -75,21 +72,94 @@ DESCRIPTION
             use Catalyst;
             sub debug { 1 }
 
+    -Dispatcher
+        Force Catalyst to use a specific dispatcher.
+
     -Engine
         Force Catalyst to use a specific engine. Omit the
         "Catalyst::Engine::" prefix of the engine name, i.e.:
 
             use Catalyst '-Engine=CGI';
 
+    -Home
+        Force Catalyst to use a specific home directory.
+
+    -Log
+        Specify log level.
+
 METHODS
-    debug
-        Overload to enable debug messages.
+    $c->action
+        Accessor for the current action
+
+    $c->comp($name)
+    $c->component($name)
+        Get a component object by name.
+
+            $c->comp('MyApp::Model::MyModel')->do_stuff;
 
     config
         Returns a hashref containing your applications settings.
 
+    debug
+        Overload to enable debug messages.
+
+    $c->detach( $command [, \@arguments ] )
+        Like "forward" but doesn't return.
+
+    $c->dispatcher
+        Contains the dispatcher instance. Stringifies to class.
+
+    $c->forward( $command [, \@arguments ] )
+        Forward processing to a private action or a method from a class. If
+        you define a class without method it will default to process(). also
+        takes an optional arrayref containing arguments to be passed to the
+        new function. $c->req->args will be reset upon returning from the
+        function.
+
+            $c->forward('/foo');
+            $c->forward('index');
+            $c->forward(qw/MyApp::Model::CDBI::Foo do_stuff/);
+            $c->forward('MyApp::View::TT');
+
+    $c->namespace
+        Accessor to the namespace of the current action
+
+    $c->path_to(@path)
+        Merges @path with $c->config->{home} and returns a Path::Class
+        object.
+
+        For example:
+
+            $c->path_to( 'db', 'sqlite.db' );
+
+    $c->setup
+        Setup.
+
+            $c->setup;
+
+    $c->uri_for($path,[@args])
+        Merges path with $c->request->base for absolute uri's and with
+        $c->request->match for relative uri's, then returns a normalized URI
+        object. If any args are passed, they are added at the end of the
+        path.
+
+    $c->error
+    $c->error($error, ...)
+    $c->error($arrayref)
+        Returns an arrayref containing error messages.
+
+            my @error = @{ $c->error };
+
+        Add a new error.
+
+            $c->error('Something bad happened');
+
+        Clean errors.
+
+            $c->error(0);
+
     $c->engine
-        Contains the engine class.
+        Contains the engine instance. Stringifies to the class.
 
     $c->log
         Contains the logging object. Unless it is already set Catalyst sets
@@ -109,8 +179,247 @@ METHODS
 
             $c->prototype->define_javascript_functions;
 
-LIMITATIONS
-    mod_perl2 support is considered experimental and may contain bugs.
+    $c->request
+    $c->req
+        Returns a "Catalyst::Request" object.
+
+            my $req = $c->req;
+
+    $c->response
+    $c->res
+        Returns a "Catalyst::Response" object.
+
+            my $res = $c->res;
+
+    $c->state
+        Contains the return value of the last executed action.
+
+    $c->stash
+        Returns a hashref containing all your data.
+
+            print $c->stash->{foo};
+
+        Keys may be set in the stash by assigning to the hash reference, or
+        by passing either a single hash reference or a list of key/value
+        pairs as arguments.
+
+        For example:
+
+            $c->stash->{foo} ||= 'yada';
+            $c->stash( { moose => 'majestic', qux => 0 } );
+            $c->stash( bar => 1, gorch => 2 );
+
+    $c->welcome_message
+        Returns the Catalyst welcome HTML page.
+
+INTERNAL METHODS
+    $c->benchmark($coderef)
+        Takes a coderef with arguments and returns elapsed time as float.
+
+            my ( $elapsed, $status ) = $c->benchmark( sub { return 1 } );
+            $c->log->info( sprintf "Processing took %f seconds", $elapsed );
+
+    $c->components
+        Contains the components.
+
+    $c->counter
+        Returns a hashref containing coderefs and execution counts. (Needed
+        for deep recursion detection)
+
+    $c->depth
+        Returns the actual forward depth.
+
+    $c->dispatch
+        Dispatch request to actions.
+
+    dump_these
+        Returns a list of 2-element array references (name, structure) pairs
+        that will be dumped on the error page in debug mode.
+
+    $c->execute($class, $coderef)
+        Execute a coderef in given class and catch exceptions. Errors are
+        available via $c->error.
+
+    $c->finalize
+        Finalize request.
+
+    $c->finalize_body
+        Finalize body.
+
+    $c->finalize_cookies
+        Finalize cookies.
+
+    $c->finalize_error
+        Finalize error.
+
+    $c->finalize_headers
+        Finalize headers.
+
+    $c->finalize_output
+        An alias for finalize_body.
+
+    $c->finalize_read
+        Finalize the input after reading is complete.
+
+    $c->finalize_uploads
+        Finalize uploads. Cleans up any temporary files.
+
+    $c->get_action( $action, $namespace )
+        Get an action in a given namespace.
+
+    $c->get_actions( $action, $namespace )
+        Get all actions of a given name in a namespace and all base
+        namespaces.
+
+    handle_request( $class, @arguments )
+        Handles the request.
+
+    $c->prepare(@arguments)
+        Turns the engine-specific request( Apache, CGI ... ) into a Catalyst
+        context .
+
+    $c->prepare_action
+        Prepare action.
+
+    $c->prepare_body
+        Prepare message body.
+
+    $c->prepare_body_chunk( $chunk )
+        Prepare a chunk of data before sending it to HTTP::Body.
+
+    $c->prepare_body_parameters
+        Prepare body parameters.
+
+    $c->prepare_connection
+        Prepare connection.
+
+    $c->prepare_cookies
+        Prepare cookies.
+
+    $c->prepare_headers
+        Prepare headers.
+
+    $c->prepare_parameters
+        Prepare parameters.
+
+    $c->prepare_path
+        Prepare path and base.
+
+    $c->prepare_query_parameters
+        Prepare query parameters.
+
+    $c->prepare_read
+        Prepare the input for reading.
+
+    $c->prepare_request
+        Prepare the engine request.
+
+    $c->prepare_uploads
+        Prepare uploads.
+
+    $c->prepare_write
+        Prepare the output for writing.
+
+    $c->read( [$maxlength] )
+        Read a chunk of data from the request body. This method is designed
+        to be used in a while loop, reading $maxlength bytes on every call.
+        $maxlength defaults to the size of the request if not specified.
+
+        You have to set MyApp->config->{parse_on_demand} to use this
+        directly.
+
+    $c->run
+        Starts the engine.
+
+    $c->set_action( $action, $code, $namespace, $attrs )
+        Set an action in a given namespace.
+
+    $c->setup_actions($component)
+        Setup actions for a component.
+
+    $c->setup_components
+        Setup components.
+
+    $c->setup_dispatcher
+    $c->setup_engine
+    $c->setup_home
+    $c->setup_log
+    $c->setup_plugins
+    $c->write( $data )
+        Writes $data to the output stream. When using this method directly,
+        you will need to manually set the Content-Length header to the
+        length of your output data, if known.
+
+    version
+        Returns the Catalyst version number. mostly useful for powered by
+        messages in template systems.
+
+INTERNAL ACTIONS
+    Catalyst uses internal actions like "_DISPATCH", "_BEGIN", "_AUTO"
+    "_ACTION" and "_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;
+
+CASE SENSITIVITY
+    By default Catalyst is not case sensitive, so "MyApp::C::FOO::Bar"
+    becomes "/foo/bar".
+
+    But you can activate case sensitivity with a config parameter.
+
+        MyApp->config->{case_sensitive} = 1;
+
+    So "MyApp::C::Foo::Bar" becomes "/Foo/Bar".
+
+ON-DEMAND PARSER
+    The request body is usually parsed at the beginning of a request, but if
+    you want to handle input yourself or speed things up a bit you can
+    enable on-demand parsing with a config parameter.
+
+        MyApp->config->{parse_on_demand} = 1;
+    
+PROXY SUPPORT
+    Many production servers operate using the common double-server approach,
+    with a lightweight frontend web server passing requests to a larger
+    backend server. An application running on the backend server must deal
+    with two problems: the remote user always appears to be '127.0.0.1' and
+    the server's hostname will appear to be 'localhost' regardless of the
+    virtual host the user connected through.
+
+    Catalyst will automatically detect this situation when you are running
+    both the frontend and backend servers on the same machine. The following
+    changes are made to the request.
+
+        $c->req->address is set to the user's real IP address, as read from the
+        HTTP_X_FORWARDED_FOR header.
+    
+        The host value for $c->req->base and $c->req->uri is set to the real host,
+        as read from the HTTP_X_FORWARDED_HOST header.
+
+    Obviously, your web server must support these 2 headers for this to
+    work.
+
+    In a more complex server farm environment where you may have your
+    frontend proxy server(s) on different machines, you will need to set a
+    configuration option to tell Catalyst to read the proxied data from the
+    headers.
+
+        MyApp->config->{using_frontend_proxy} = 1;
+    
+    If you do not wish to use the proxy support at all, you may set:
+
+        MyApp->config->{ignore_frontend_proxy} = 1;
+
+THREAD SAFETY
+    Catalyst has been tested under Apache 2's threading mpm_worker,
+    mpm_winnt, and the standalone forking HTTP server on Windows. We believe
+    the Catalyst core to be thread-safe.
+
+    If you plan to operate in a threaded environment, remember that all
+    other modules you are using must also be thread-safe. Some modules, most
+    notably DBD::SQLite, are not thread-safe.
 
 SUPPORT
     IRC:
@@ -134,17 +443,67 @@ SEE ALSO
     Catalyst::Response - The Response Object
     Catalyst::Test - The test suite.
 
+CREDITS
+    Andy Grundman
+
+    Andy Wardley
+
+    Andreas Marienborg
+
+    Andrew Bramble
+
+    Andrew Ford
+
+    Andrew Ruthven
+
+    Arthur Bergman
+
+    Autrijus Tang
+
+    Christian Hansen
+
+    Christopher Hicks
+
+    Dan Sully
+
+    Danijel Milicevic
+
+    David Naughton
+
+    Gary Ashton Jones
+
+    Geoff Richards
+
+    Jesse Sheidlower
+
+    Jesse Vincent
+
+    Jody Belka
+
+    Johan Lindstrom
+
+    Juan Camacho
+
+    Leon Brocard
+
+    Marcus Ramberg
+
+    Matt S Trout
+
+    Robert Sedlacek
+
+    Sam Vilain
+
+    Tatsuhiko Miyagawa
+
+    Ulf Edvinsson
+
+    Yuval Kogman
+
 AUTHOR
     Sebastian Riedel, "sri@oook.de"
 
-THANK YOU
-    Andy Grundman, Andrew Ford, Andrew Ruthven, Autrijus Tang, Christian
-    Hansen, Christopher Hicks, Dan Sully, Danijel Milicevic, David Naughton,
-    Gary Ashton Jones, Geoff Richards, Jesse Sheidlower, Jody Belka, Johan
-    Lindstrom, Juan Camacho, Leon Brocard, Marcus Ramberg, Tatsuhiko
-    Miyagawa and all the others who've helped.
-
 LICENSE
-    This library is free software . You can redistribute it and/or modify it
-    under the same terms as perl itself.
+    This library is free software, you can redistribute it and/or modify it
+    under the same terms as Perl itself.