Add place authors can stick local stuff while updating
[catagits/Catalyst-Manual.git] / lib / Catalyst / Manual / Tutorial / 01_Intro.pod
CommitLineData
d442cc9f 1=head1 NAME
2
3ab6187c 3Catalyst::Manual::Tutorial::01_Intro - Catalyst Tutorial - Chapter 1: Introduction
d442cc9f 4
5
6=head1 OVERVIEW
7
4b4d3884 8This is B<Chapter 1 of 10> for the Catalyst tutorial.
d442cc9f 9
10L<Tutorial Overview|Catalyst::Manual::Tutorial>
11
12=over 4
13
14=item 1
15
3ab6187c 16B<01_Introduction>
d442cc9f 17
18=item 2
19
3ab6187c 20L<Catalyst Basics|Catalyst::Manual::Tutorial::02_CatalystBasics>
d442cc9f 21
22=item 3
23
3ab6187c 24L<More Catalyst Basics|Catalyst::Manual::Tutorial::03_MoreCatalystBasics>
d442cc9f 25
26=item 4
27
3ab6187c 28L<Basic CRUD|Catalyst::Manual::Tutorial::04_BasicCRUD>
d442cc9f 29
30=item 5
31
3ab6187c 32L<Authentication|Catalyst::Manual::Tutorial::05_Authentication>
d442cc9f 33
34=item 6
35
3ab6187c 36L<Authorization|Catalyst::Manual::Tutorial::06_Authorization>
d442cc9f 37
38=item 7
39
3ab6187c 40L<Debugging|Catalyst::Manual::Tutorial::07_Debugging>
d442cc9f 41
42=item 8
43
3ab6187c 44L<Testing|Catalyst::Manual::Tutorial::08_Testing>
d442cc9f 45
46=item 9
47
3ab6187c 48L<Advanced CRUD|Catalyst::Manual::Tutorial::09_AdvancedCRUD>
1def4a20 49
50=item 10
51
3ab6187c 52L<Appendices|Catalyst::Manual::Tutorial::10_Appendices>
d442cc9f 53
54=back
55
1def4a20 56
d442cc9f 57=head1 DESCRIPTION
58
ffeb7448 59This tutorial provides a multi-part introduction to the Catalyst web
d442cc9f 60framework. It seeks to provide a rapid overview of many of its most
61commonly used features. The focus is on the real-world best practices
62required in the construction of nearly all Catalyst applications.
63
64Although the primary target of the tutorial is users new to the Catalyst
65framework, experienced users may wish to review specific sections (for
1def4a20 66example, how to use DBIC for their model classes, how to add
67authentication and authorization to an existing application, or form
68management).
d442cc9f 69
70You can obtain the code for all the tutorial examples from the
71catalyst subversion repository by issuing the command:
72
028b4e1a 73 svn co http://dev.catalyst.perl.org/repos/Catalyst/trunk/examples/Tutorial/ CatalystTutorial
d442cc9f 74
75b13da6 75This will download the most recent code for each chapter of the
76tutorial into the CatalystTutorial directory on your machine.
d442cc9f 77
3d9ae335 78B<These reference implementations are provided so that when you follow
79the tutorial, you can use the code from the subversion repository to
80ensure that your system is set up correctly, and that you have not
81inadvertently made any typographic errors, or accidentally skipped
82part of the tutorial.>
83
ffeb7448 84B<NOTE: You can use any Perl-supported OS and environment to run
3533daff 85Catalyst.> It should make little or no difference to Catalyst's
acbd7bdd 86operation, B<but this tutorial has been written using the Debian 5
3f043f41 87live CD> because that represents a quick and easy way for most people to
acbd7bdd 88try out Catalyst with virtually zero setup time and hassles. Also,
89the tutorial has been tested to work correctly with the versions of
90Catalyst and all the supporting modules in Debian 5 (see "VERSIONS
91AND CONVENTIONS USED IN THIS TUTORIAL" below for the specific versions
92for some of the key modules), so B<if you think you might be running
93into an issue related to versions> (for example, a module changed its
94behavior in a newer version or a bug was introduced), B<it might be
444d6b27 95worth giving Debian 5 a try>.
3533daff 96
444d6b27 97If you plan to follow along with Debian 5, you can jump down to the
98"Debian" section under L</"CATALYST INSTALLATION"> below and it will walk you
99though the setup of a fully functional Catalyst environment. If you
100would prefer to install directly from CPAN, you can download the example
3533daff 101program and all the necessary dependencies to your local machine by
444d6b27 102installing the C<Task::Catalyst::Tutorial> distribution:
d442cc9f 103
104 cpan Task::Catalyst::Tutorial
105
106This will also test to make sure the dependencies are working. If you
107have trouble installing these, please ask for help on the #catalyst
108IRC channel, or the Catalyst mailing list.
109
3533daff 110Subjects covered by the tutorial include:
d442cc9f 111
112=over 4
113
114=item *
115
116A simple application that lists and adds books.
117
118=item *
119
acbd7bdd 120The use of L<DBIx::Class|DBIx::Class> (DBIC) for the model (including
121some of the more advanced techniques you will probably want to use in
122your applications).
d442cc9f 123
124=item *
125
126How to write CRUD (Create, Read, Update, and Delete) operations in
127Catalyst.
128
129=item *
130
131Authentication ("auth").
132
133=item *
134
135Role-based authorization ("authz").
136
137=item *
138
418ded01 139Attempts to provide an example showing current (5.8XXX) Catalyst
d442cc9f 140practices. For example, the use of
141L<Catalyst::Action::RenderView|Catalyst::Action::RenderView>,
142DBIC, L<Catalyst::Plugin::ConfigLoader|Catalyst::Plugin::ConfigLoader>
45d511e0 143with C<myapp.conf>, the use of C<lib/MyApp/Controller/Root.pm>
d442cc9f 144vs. C<lib/MyApp.pm>, etc.
145
146=item *
147
1390ef0e 148The use of Template Toolkit (TT).
d442cc9f 149
150=item *
151
152Useful techniques for troubleshooting and debugging Catalyst
153applications.
154
155=item *
156
157The use of SQLite as a database (with code also provided for MySQL and
444d6b27 158PostgreSQL). (Note: Because we make use of the DBIx::Class Object
159Relational Mapping [ORM] layer, out our application will be database
160agnostic and can easily be used by any of the databases supported
161by DBIx::Class.)
d442cc9f 162
163=item *
164
0abc72ed 165The use of L<HTML::FormFu|HTML::FormFu> or L<HTML::FormHandler|HTML::FormHandler>
166for automated form processing and validation.
d442cc9f 167
168=back
169
170This tutorial makes the learning process its main priority. For
171example, the level of comments in the code found here would likely be
1def4a20 172considered excessive in a "normal project." Because of their contextual
d442cc9f 173value, this tutorial will generally favor inline comments over a
174separate discussion in the text. It also deliberately tries to
175demonstrate multiple approaches to various features (in general, you
176should try to be as consistent as possible with your own production
177code).
178
179Furthermore, this tutorial tries to minimize the number of controllers,
180models, TT templates, and database tables. Although this does result in
181things being a bit contrived at times, the concepts should be applicable
182to more complex environments. More complete and complicated example
183applications can be found in the C<examples> area of the Catalyst
184Subversion repository at
185L<http://dev.catalyst.perl.org/repos/Catalyst/trunk/examples/>.
186
1390ef0e 187
2e73e2be 188=head1 QUICK START
189
190For those who want to get going quickly, here is a short "cookbook-style
191recipe" to quickly get you up and running. Although there are many
192different ways to get a Catalyst environment going, this tutorial has
193been written with and tested against Debian 5 Live CD, using the steps
194in this Quick Start.
195
196If you want, you can follow the directions in this section and then jump
197right to L<Chapter 2|Catalyst::Manual::Tutorial::02_CatalystBasics> of
198the tutorial. However, it would be a good idea to come back and read the
199sections below the Quick Start when you have time. Or, continue reading
200those other sections for suggestions if you do not wish to use the
201Debian 5 Live CD.
202
203
204=over 4
205
206=item 1
207
208Download the C<debian-live-503-i386-rescue.iso> image from
209L<http://cdimage.debian.org/cdimage/release/current-live/i386/iso-cd/>.
210
211=item 2
212
213Boot this disk, either in a physical machine, or possibly some sort
214of virtual machine (can be a very handy way to practice).
215
216=item 3
217
218Select "C<Live>" from the initial boot menu.
219
220=item 4
221
222At the "C<user@debian:~$>" prompt, type:
223
224 sudo aptitude -y install subversion
225
226=item 5
227
228If you want to be able to remotely SSH to this system, set a
229password for root:
230
231 sudo passwd
232 ...
233
234=item 6
235
236Add the "unstable" Debian package repository:
237
238 sudo vi /etc/apt/sources.list
239
240Add the following line to the bottom of this file:
241
242 deb http://ftp.us.debian.org/debian/ unstable main
243
244=item 7
245
246Install Catalyst and related libraries:
247
248 sudo aptitude update
249 sudo aptitude -y install sqlite3 libdbd-sqlite3-perl libcatalyst-perl \
250 libcatalyst-modules-perl libdbix-class-timestamp-perl \
251 libdatetime-format-sqlite-perl libconfig-general-perl \
252 libhtml-formfu-model-dbic-perl libterm-readline-perl-perl \
195424f2 253 libdbix-class-encodedcolumn-perl libperl6-junction-perl \
254 libtest-pod-perl
2e73e2be 255 sudo aptitude clean
256
257=item 8
258
259Test example code:
260
261 mkdir test
262 cd test
263 svn co http://dev.catalystframework.org/repos/Catalyst/trunk/examples/Tutorial/MyApp_Chapter8
264 cd MyApp_Chapter8/MyApp
265 CATALYST_DEBUG=0 prove -wl t
266 cd
267
268=back
269
270
d442cc9f 271=head1 VERSIONS AND CONVENTIONS USED IN THIS TUTORIAL
272
273This tutorial was built using the following resources. Please note that
274you may need to make adjustments for different environments and
6163536a 275versions (note that trailing zeros in version numbers are not
276significant and may get dropped with techniques for viewing them;
277for example, Catalyst v5.80020 might show up as 5.8002):
d442cc9f 278
279=over 4
280
281=item *
282
acbd7bdd 283Debian 5 (Lenny)
d442cc9f 284
285=item *
286
6163536a 287Catalyst v5.80020 (note: may show up as '5.8002' without the trailing zero)
dd88c3b6 288
22a67212 289=item *
dd88c3b6 290
6163536a 291Catalyst::Devel v1.26
d442cc9f 292
293=item *
294
6163536a 295DBIx::Class v0.08115
d442cc9f 296
fce83e5f 297=item *
298
2e73e2be 299Catalyst::Model::DBIC::Schema v0.40
300
301=item *
302
fce83e5f 303Template Toolkit v2.20
304
2e73e2be 305
d442cc9f 306=item *
307
308Catalyst Plugins
309
310The plugins used in this tutorial all have sufficiently stable APIs that
311you shouldn't need to worry about versions. However, there could be
312cases where the tutorial is affected by what version of plugins you
313use. This tutorial has been tested against the following set of plugins:
314
315=over 4
316
317=item *
318
6163536a 319Catalyst::Plugin::Authentication -- v0.10016
d442cc9f 320
321=item *
322
6163536a 323Catalyst::Plugin::Authorization::Roles -- v0.08
d442cc9f 324
325=item *
326
f34d7f62 327Catalyst::Plugin::ConfigLoader -- v0.27
d442cc9f 328
329=item *
330
f34d7f62 331Catalyst::Plugin::Session -- v0.29
d442cc9f 332
333=item *
334
f34d7f62 335Catalyst::Plugin::Session::State::Cookie -- v0.17
d442cc9f 336
337=item *
338
95455c74 339Catalyst::Plugin::Session::Store::File -- v0.18
d442cc9f 340
341=item *
342
f34d7f62 343Catalyst::Plugin::StackTrace -- v0.11
d442cc9f 344
345=item *
346
2e73e2be 347Catalyst::Plugin::Static::Simple -- v0.29
d442cc9f 348
349=back
350
2e73e2be 351=item *
352
353HTML::FormFu -- v0.06001
354
d442cc9f 355=item *
356
865d3efb 357B<NOTE:> You can check the versions you have installed with the
358following command:
359
f63a9a2b 360 perl -M<_mod_name_> -e 'print "$<_mod_name_>::VERSION\n"'
865d3efb 361
362For example:
865d3efb 363
444d6b27 364 perl -MCatalyst -e 'print "$Catalyst::VERSION\n";'
365
366or:
367
368 perl -MCatalyst::Devel -e 'print "$Catalyst::Devel::VERSION\n";'
d442cc9f 369
370=item *
371
444d6b27 372This tutorial will assume that the web browser is located on the same
373system where the Catalyst development server is running, and
374therefore use a URL of C<http://localhost:3000> (the Catalyst
375development server defaults to port 3000). If you are running Perl on
376a different box than where your web browser is located (or using a
377different port number via the C<-p> I<port_number> option to the
378development server), then you will need to update the URL you use
379accordingly.
380
381Please Note: Depending on the web browser you are using, you might
382need to hit C<Shift+Reload> or C<Ctrl+Reload> to pull a fresh page
383when testing your application at various points (see
384L<http://en.wikipedia.org/wiki/Bypass_your_cache> for a comprehensive
1390ef0e 385list of options for each browser). Also, the C<-k> keepalive option
386to the development server can be necessary with some browsers
387(especially Internet Explorer).
d442cc9f 388
389=back
390
1390ef0e 391
d442cc9f 392=head1 CATALYST INSTALLATION
393
acbd7bdd 394Although Catalyst installation has been a challenge in the past, the
395good news is that there are a growing number of options to eliminate
396(or at least dramatically simplify) this concern. Although a
397compelling strength of Catalyst is that it makes use of many of the
398modules in the vast repository that is CPAN, this can complicate the
399installation process if you approach it in the wrong way. Consider
400the following suggestions on the most common ways to get started with
401a Catalyst development environment:
1def4a20 402
403=over 4
404
405=item *
406
acbd7bdd 407Debian
408
409The Debian 5 live CD represents a great way for newcomers to
410experiment with Catalyst. As a "live CD," you can simple boot from
411the CD, run a few commands, and in a matter of minutes you should have
412a fully function environment in which do this tutorial. B<The tutorial
413was fully tested to work under Debian 5. Although it SHOULD work
414under any Catalyst installation method you might choose, it can be
415hard to guarantee this.>
416
417=over 4
418
419=item *
420
421Download one of the ISO files from
6163536a 422L<http://cdimage.debian.org/cdimage/release/current-live/i386/iso-cd/>
423(the current version at the time this was written was 5.0.3).
acbd7bdd 424You can pick any one of the live CD variations will work, but
425you may wish to consider the following points:
426
427=over 4
428
429=item *
430
6163536a 431"C<debian-live-503-i386-rescue.iso>" is probably the best all-around
acbd7bdd 432option for most people because it includes many extra tools such as
433the GCC compiler, therefore saving RAM (every package you need to
434install when running from live CD consumes memory because RAM disk is
435being used in lieu of real disk space). When initially booting under
436this image, you may see some cryptic warning messages having to do
437with various diagnostic tools it tries to load or enable, but you
438should be able to safely ignore these.
439
440=item *
441
6163536a 442"C<debian-live-503-i386-standard.iso>" is a great option because of
acbd7bdd 443its compact size, but you will probably need approximately 1 GB of RAM
444in the computer where you will run the tutorial. Because the
445"standard" live CD comes with with a minimal set of tools, we will
446have to install extra packages (such as the GCC compiler), all of
447which will require RAM when running from a live CD.
448
449=item *
450
451The other ISO images include different flavors of X-Windows desktop
452managers. You can select one of these if you don't mind the larger
453download size and prefer a graphical environment. Be aware that these
454disks do not come with the extra tools found on the "rescue" image, so
455you will need adequate RAM to be able to install them just as you
456would under the "standard" image. B<Use one of the "graphical" ISO
457images if you want a graphical web browser on the same machine as
458where you will run the tutorial.> (If you are using one of the non-
459graphical images discussed above, you can still use a graphical web
460browser from another machine and point it to your Catalyst development
461machine.)
462
463=back
464
465=item *
466
467Boot off the CD.
468
469=item *
470
471Select "C<Live>" from the initial boot menu.
472
473=item *
474
6163536a 475Once the system has booted to a "C<user@debian:~$>" prompt, first
476install the Subversion client in case you want to check out the
477completed chapter example code:
478
0ed3df53 479 sudo aptitude -y install subversion
6163536a 480
2e73e2be 481If you want to be able to remotely SSH to this system, set a
482password for root:
483
484 sudo passwd
485 ...
486
6163536a 487Then enter the following command to add the more current "unstable"
488package repository so we get the latest versions of Catalyst and
489related packages:
acbd7bdd 490
491 sudo vi /etc/apt/sources.list
492
493Add the following line to the bottom of this file:
494
495 deb http://ftp.us.debian.org/debian/ unstable main
496
497If you are not familiar with VI, you can move to the bottom of this
498file and press the "o" key to insert a new line and type the line
499above. Then press the "Esc" key followed by a colon (":"), the
500letters "wq" and then the "Enter" key. The rest of the tutorial will
501assume that you know how to use some editor that is available from the
502Linux command-line environment.
503
504=item *
505
506Install Catalyst:
507
508 sudo aptitude update
509 sudo aptitude -y install sqlite3 libdbd-sqlite3-perl libcatalyst-perl \
444d6b27 510 libcatalyst-modules-perl libdbix-class-timestamp-perl \
2314f851 511 libdatetime-format-sqlite-perl libconfig-general-perl \
9314188c 512 libhtml-formfu-model-dbic-perl libterm-readline-perl-perl \
195424f2 513 libdbix-class-encodedcolumn-perl libperl6-junction-perl \
514 libtest-pod-perl
444d6b27 515
516Let it install (normally about a 30 to 90-second operaton) and you are
517done. (Note the '\' above. Depending on your environment, you might
518be able to cut and paste the text as shown or need to remove the '\'
fce83e5f 519characters to that the command is all on a single line.)
acbd7bdd 520
521If you are using an image other than the "rescue" ISO, you will also need
522to run the following command to install additional packages:
523
524 sudo aptitude -y install gcc make libc6-dev
525
526If you are running from the Live CD, you probably also want to free up
527some RAM disk space with the following:
528
529 sudo aptitude clean
530
531NOTE: While the instructions above mention the Live CD because that
532makes it easy for people new to Linux, you can obviously pick a
533different Debian ISO image and install it to your hard drive.
534Although there are many different ways to download and install Debian,
535the "netinst" ISO image (such as "C<debian-500-i386-netinst.iso>"
536represents a great option because it keeps your initial download small
3871305d 537(but still lets you install anything you want "over the network").
acbd7bdd 538
539Here are some tips if you are running from a live CD and are running
540out of disk space (which really means you are running out of RAM):
541
542=over 4
543
544=item *
545
546Always run "C<aptitude clean>" after you install new packages to
547delete the original .deb files (the files installed B<by> the .deb
548package B<will> remain available, just the .deb package itself is
549deleted).
550
551=item *
552
553If you are installing modules from CPAN, you can free up some space
444d6b27 554with "C<rm -rf /root/.cpan/*>" (change "/root/" in the previous
555command to match your home directory or the location where CPAN
556has been configured to perform build operations).
acbd7bdd 557
558=item *
559
560If necessary, you can remove the cached package information with the
561command "C<rm -f /var/lib/apt/lists/*>". You can later pull this
562information again via the command "C<aptitude update>".
563
564=item *
565
566You can save a small amount of space by commenting out the lines in
567C</etc/apt/sources.list> that reference "deb-src" and
568"security.debian.org". If you have already done an "C<aptitude
569update>" with these repositories enabled, you can use the tip in the
570previous bullet to free the space up (and then do another "C<aptitude
571update>").
572
573=item *
574
575Although you can free up space by removing packages you installed
576since you last booted (check out "C<aptitude remove _pkg_name>"),
577don't bother trying to remove packages already available at the time
578of boot. Instead of freeing up space, it will actual I<consume> some
579space. (The live CD uses these "burn in" packages right from the CD
580disk vs. first loading them on the virtual RAM disk. However, if you
581remove them, the system has to update various files, something that
582I<does> consume some space on the virtual RAM disk.)
583
584=back
585
586=back
587
588=item *
589
1def4a20 590Ubuntu
591
acbd7bdd 592Ubuntu is an extremely popular offshoot of Debian. It provides
593cutting edge versions of many common tools, application and libraries
594in an easy-to-run live CD configuration (and because a single download
595option can be used for both live CD and install-to-disk usage, it
596keeps your download options nice and simple). As with Debian 5, you
597should be able to generate a fully function Catalyst environment in a
598matter of minutes. Here are quick instructions on how to use Ubuntu
599to prepare for the tutorial:
d442cc9f 600
601=over 4
602
603=item *
604
acbd7bdd 605Download the Ubuntu Desktop edition and boot from the CD and/or image
606file, select your language, and then "Try Ubuntu without any changes
607to your computer."
1def4a20 608
609=item *
610
3533daff 611Open a terminal session (click "Applications" in the upper-left
612corner, then "Accessories," then "Terminal").
1def4a20 613
614=item *
615
616Add the 'universe' repositories:
617
3533daff 618 sudo gedit /etc/apt/sources.list
1def4a20 619
620And remove the comments from the lines under the comments about the
621'universe' repositories.
622
623=item *
624
625Install Catalyst:
626
acbd7bdd 627 sudo aptitude update
628 sudo aptitude install libdbd-sqlite3-perl libcatalyst-perl libcatalyst-modules-perl libconfig-general-perl
1def4a20 629
2b75577c 630Accept all of the dependencies. Done.
631
632If you are running from the Live CD, you probably also want to free up
633some disk space with the following:
634
acbd7bdd 635 sudo aptitude clean
2b75577c 636
acbd7bdd 637NOTE: While the instructions above mention the live CD because that
2b75577c 638makes it easy for people new to Linux, you can obviously also use one
639of the options to install Ubuntu on your drive.
3533daff 640
1def4a20 641=back
642
643=item *
644
d442cc9f 645Matt Trout's C<cat-install>
646
1ee1c3c3 647Available at L<http://www.shadowcat.co.uk/static/cat-install>,
ffeb7448 648C<cat-install> can be a fairly painless way to get Catalyst up and
649running. Just download the script from the link above and type C<perl
650cat-install>. Depending on the speed of your Internet connection and
651your computer, it will probably take 30 to 60 minutes to install because
652it downloads, makes, compiles, and tests every module. But this is an
653excellent way to automate the installation of all the latest modules
654used by Catalyst from CPAN.
655
d442cc9f 656
657=item *
658
ffeb7448 659Other Possibilities
660
661=over 4
662
663=item *
664
665OpenBSD Packages
666
667The 2008 Advent Day 4 entry has more information on using OpenBSD
668packages to quickly build a system:
669L<http://www.catalystframework.org/calendar/2008/4>.
670
671=item *
d442cc9f 672
ffeb7448 673NetBSD Package Collection on Solaris
674
675The 2008 Advent Day 15 entry has more information on using C<pkgsrc> and
676NetBSD packages on Solaris:
1435672d 677L<http://www.catalystframework.org/calendar/2008/15>.
d442cc9f 678
679=item *
680
ffeb7448 681CatInABox
682
683You can get more information at
684L<http://www.catalystframework.org/calendar/2008/7>
685or L<Perl::Dist::CatInABox|Perl::Dist::CatInABox>.
686
0c51850e 687=item *
688
689Frank Speiser's Amazon EC2 Catalyst SDK
690
691There are currently two flavors of publicly available Amazon Machine
692Images (AMI) that include all the elements you'd need to begin
693developing in a fully functional Catalyst environment within minutes.
694See L<Catalyst::Manual::Installation|Catalyst::Manual::Installation>
695for more details.
696
d442cc9f 697=back
698
ffeb7448 699=back
700
d442cc9f 701For additional information and recommendations on Catalyst installation,
702please refer to
703L<Catalyst::Manual::Installation|Catalyst::Manual::Installation>.
704
1390ef0e 705
d442cc9f 706=head1 DATABASES
707
708This tutorial will primarily focus on SQLite because of its simplicity
709of installation and use; however, modifications in the script required
acbd7bdd 710to support MySQL and PostgreSQL will be presented in Appendix.
d442cc9f 711
712B<Note:> One of the advantages of the MVC design patterns is that
713applications become much more database independent. As such, you will
714notice that only the C<.sql> files used to initialize the database
715change between database systems: the Catalyst code generally remains the
716same.
717
1390ef0e 718
d442cc9f 719=head1 WHERE TO GET WORKING CODE
720
4b4d3884 721Each chapter of the tutorial has complete code available as a tarball in
028b4e1a 722the main Catalyst Subversion repository (see the note at the beginning
723of each part for the appropriate svn command to use).
d442cc9f 724
4b4d3884 725B<NOTE:> You can run the test cases for the final code through Chapter 8
028b4e1a 726with the following commands:
d442cc9f 727
0ed3df53 728 svn co http://dev.catalystframework.org/repos/Catalyst/trunk/examples/Tutorial/MyApp_Chapter8
729 cd MyApp_Chapter8/MyApp
96a87356 730 CATALYST_DEBUG=0 prove -wl t
d442cc9f 731
96a87356 732If you wish to include the L<HTML::FormFu|HTML::FormFu> section in your tests,
6163536a 733substitute C<MyApp_Chapter9_FormFu> for C<MyApp_Chapter8> in the URL
734above (don't forget to "cd" out of the Ch8 directory if you ran the code above).
acbd7bdd 735
0ed3df53 736 svn co http://dev.catalystframework.org/repos/Catalyst/trunk/examples/Tutorial/MyApp_Chapter9_FormFu
737 cd MyApp_Chapter9_FormFu/MyApp
96a87356 738 CATALYST_DEBUG=0 prove -wl t
acbd7bdd 739
740You can also fire up the application under the development server that is conveniently
741built in to Catalyst. Just issue this command from the C<MyApp> directory where you
742ran the test suite above:
743
744 script/myapp_server.pl
745
746And the application will start. You can try out the application by
747pulling up C<http://localhost:3000> in your web browser (as mentioned
748earlier, change C<localhost> to a different IP address or DNS name if
749you are running your web browser and your Catalyst development on
750different boxes). We will obviously see more about how to use the
4b4d3884 751application as we go through the remaining chapters of the tutorial, but
acbd7bdd 752for now you can log in using the username "test01" and a password of
753"mypass".
754
d442cc9f 755
756=head1 AUTHOR
757
758Kennedy Clark, C<hkclark@gmail.com>
759
53243324 760Feel free to contact the author for any errors or suggestions, but the
761best way to report issues is via the CPAN RT Bug system at
762<https://rt.cpan.org/Public/Dist/Display.html?Name=Catalyst-Manual>.
763
764The most recent version of the Catalyst Tutorial can be found at
59884771 765L<http://dev.catalyst.perl.org/repos/Catalyst/Catalyst-Manual/5.80/trunk/lib/Catalyst/Manual/Tutorial/>.
d442cc9f 766
ec3ef4ad 767Copyright 2006-2010, Kennedy Clark, under the
768Creative Commons Attribution Share-Alike License Version 3.0
865d3efb 769(L<http://creativecommons.org/licenses/by-sa/3.0/us/>).