X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Manual.git;a=blobdiff_plain;f=lib%2FCatalyst%2FManual%2FTutorial%2F02_CatalystBasics.pod;h=aaabaaa2b5eff3cab1002646e2209d81d7e8019e;hp=06e49864fad0b0a7113ea7c37de432c3117b7d0b;hb=61cb69fd002171a4c8a0e6c1188dc3530b918993;hpb=f34d7f6289f4ed36661ed89ea22357063f78fd6c diff --git a/lib/Catalyst/Manual/Tutorial/02_CatalystBasics.pod b/lib/Catalyst/Manual/Tutorial/02_CatalystBasics.pod index 06e4986..aaabaaa 100644 --- a/lib/Catalyst/Manual/Tutorial/02_CatalystBasics.pod +++ b/lib/Catalyst/Manual/Tutorial/02_CatalystBasics.pod @@ -188,13 +188,16 @@ Run the following command to start up the built-in development web server (make sure you didn't forget the "C" from the previous step): - $ script/hello_server.pl +B: the -r enables reloading on code changes so you don't have to stop and +start the server when you update code. see perldoc script/hello_server.pl for +more useful options. + + $ script/hello_server.pl -r [debug] Debug messages enabled [debug] Statistics enabled [debug] Loaded plugins: .----------------------------------------------------------------------------. | Catalyst::Plugin::ConfigLoader 0.27 | - | Catalyst::Plugin::Static::Simple 0.25 | '----------------------------------------------------------------------------' [debug] Loaded dispatcher "Catalyst::Dispatcher" @@ -221,11 +224,11 @@ previous step): .-------------------------------------+--------------------------------------. | Path | Private | +-------------------------------------+--------------------------------------+ - | / | /default | | / | /index | + | / | /default | '-------------------------------------+--------------------------------------' - [info] Hello powered by Catalyst 5.80013 + [info] Hello powered by Catalyst 5.80018 You can connect to your server at http://debian:3000 Point your web browser to L (substituting a @@ -235,17 +238,18 @@ screen or an "Index" screen, you probably forgot to specify port 3000 in your URL). Information similar to the following should be appended to the logging output of the development server: - [info] *** Request 1 (0.005/s) [20712] [Sun Oct 11 11:58:51 2009] *** - [debug] "GET" request for "/" from "172.0.0.1" - [info] Request took 0.007342s (136.203/s) - .----------------------------------------------------------------+-----------. - | Action | Time | - +----------------------------------------------------------------+-----------+ - | /index | 0.000491s | - | /end | 0.000595s | - '----------------------------------------------------------------+-----------' + [info] *** Request 1 (0.001/s) [23194] [Sat Jan 16 11:09:18 2010] *** + [debug] "GET" request for "/" from "127.0.0.1" + [debug] Path is "/" + [info] Request took 0.004851s (206.143/s) + .------------------------------------------------------------+-----------. + | Action | Time | + +------------------------------------------------------------+-----------+ + | /index | 0.000395s | + | /end | 0.000425s | + '------------------------------------------------------------+-----------' -Press Ctrl-C to break out of the development server. +B: Press Ctrl-C to break out of the development server if necessary. =head1 HELLO WORLD @@ -303,7 +307,7 @@ C method. Add the following subroutine to your C file: - sub hello : Global { + sub hello :Global { my ( $self, $c ) = @_; $c->response->body("Hello, World!"); @@ -314,11 +318,34 @@ cutting and pasting example code from POD-based documents. Here you're sending your own string to the webpage. -Save the file, start the server (stop and restart it if it's still -running), and go to L to -see "Hello, World!" Also notice that a new action is listed under -"Loaded Private actions" in the development server debug output. +Save the file, and you should notice the following in your server output: + Saw changes to the following files: + - /srv/http/xenoterracide/Catalyst/Hello/lib/Hello/Controller/Root.pm (modify) + + Attempting to restart the server + ... + [debug] Loaded Private actions: + .----------------------+--------------------------------------+--------------. + | Private | Class | Method | + +----------------------+--------------------------------------+--------------+ + | /default | Hello::Controller::Root | default | + | /end | Hello::Controller::Root | end | + | /index | Hello::Controller::Root | index | + | /hello | Hello::Controller::Root | hello | + '----------------------+--------------------------------------+--------------' + + [debug] Loaded Path actions: + .-------------------------------------+--------------------------------------. + | Path | Private | + +-------------------------------------+--------------------------------------+ + | / | /index | + | / | /default | + | /hello | /hello | + '-------------------------------------+--------------------------------------' + ... + +Go to L to see "Hello, World!". =head2 Hello, World! Using a View and a Template @@ -384,10 +411,10 @@ template file (C). The rest of the template is normal HTML. Change the hello method in C to the following: - sub hello : Global { + sub hello :Global { my ( $self, $c ) = @_; - $c->stash->{template} = 'hello.tt'; + $c->stash(template => 'hello.tt'); } This time, instead of doing C<$c-Eresponse-Ebody()>, you are @@ -400,11 +427,6 @@ default) view to be rendered (unless there's a C<$c-Eresponse- Ebody()> statement). So your template will be magically displayed at the end of your method. -After saving the file, restart the development server, and look at -L again. You should -see the template that you just made. - - =head1 CREATE A SIMPLE CONTROLLER AND AN ACTION Create a controller named "Site" by executing the create script: @@ -417,7 +439,7 @@ not much there. In C, add the following method: - sub test : Local { + sub test :Local { my ( $self, $c ) = @_; $c->stash->{username} = "John"; @@ -448,10 +470,6 @@ template file at that location. Include a line like:

Hello, [% username %]!

-Bring up or restart the server. Notice in the server output that -C is listed in the Loaded Path actions. Go to -L in your browser. - You should see your test.tt file displayed, including the name "John" that you set in the controller.