X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Manual.git;a=blobdiff_plain;f=lib%2FCatalyst%2FManual%2FTutorial%2F01_Intro.pod;h=d7b6ad41d52ab32cc237d1621879e1731f40ef74;hp=340a56849b379dd6bdba2469f64886453a288619;hb=24acc5d75bb4208eeef4d1bad0974f0fd5893454;hpb=a5628822e2b86f50a3f9b4ceba710696b89f5d0c diff --git a/lib/Catalyst/Manual/Tutorial/01_Intro.pod b/lib/Catalyst/Manual/Tutorial/01_Intro.pod index 340a568..d7b6ad4 100644 --- a/lib/Catalyst/Manual/Tutorial/01_Intro.pod +++ b/lib/Catalyst/Manual/Tutorial/01_Intro.pod @@ -56,8 +56,8 @@ L =head1 DESCRIPTION -This tutorial provides a multi-part introduction to the Catalyst web -framework. It seeks to provide a rapid overview of many of its most +This tutorial provides a multi-part introduction to the Catalyst Web +Framework. It seeks to provide a rapid overview of many of its most commonly used features. The focus is on the real-world best practices required in the construction of nearly all Catalyst applications. @@ -67,8 +67,8 @@ example, how to use DBIC for their model classes, how to add authentication and authorization to an existing application, and/or form management). -You can obtain the code for all the tutorial examples from the -catalyst subversion repository by issuing the command: +The most recent code for the tutorial is included on the Tutorial Virtual +Machine you can download from: svn co http://dev.catalyst.perl.org/repos/Catalyst/trunk/examples/Tutorial/ CatalystTutorial @@ -76,30 +76,26 @@ This will download the most recent code for each chapter of the tutorial into the CatalystTutorial directory on your machine. B +the tutorial, you can use the code to ensure that your system is set up +correctly (which shouldn't be an issue if you use the Tutorial Virtual +Machine), :-) and that you have not inadvertently made any typographic +errors, or accidentally skipped part of the tutorial.> B It should make little or no difference to Catalyst's -operation, B because that represents a quick and easy way for most people to try -out Catalyst with virtually zero setup time and hassles. Also, the -tutorial has been tested to work correctly with the versions of Catalyst -and all the supporting modules in Debian 6 (see "VERSIONS AND -CONVENTIONS USED IN THIS TUTORIAL" below for the specific versions for -some of the key modules), so B (for example, a module changed its behavior -in a newer version or a bug was introduced), B. - -If you plan to follow along with Debian 6, you can jump down to the -"Debian" section under L below and it will -walk you though the setup of a fully functional Catalyst environment. If -you would prefer to install directly from CPAN, you can download the -example program and all the necessary dependencies to your local machine -by installing the C distribution: +operation, B to avoid issues +that may crop up if you are working with a different configuration. We +have tested the Tutorial Virtual Machine to make sure all of the +examples work correctly, but it is hard to guarantee this on other +platforms and versions. + +If you would prefer to install directly from CPAN and not use the +Tutorial Virtual machine, you can download the example program and all +the necessary dependencies to your local machine by installing the +C distribution: cpan Task::Catalyst::Tutorial @@ -117,7 +113,7 @@ A simple application that lists and adds books. =item * -The use of L (DBIC) for the model (including +The use of L (DBIC) for the model (including some of the more advanced techniques you will probably want to use in your applications). @@ -158,7 +154,7 @@ DBIx::Class.) =item * -The use of L or L +The use of L or L for automated form processing and validation. =back @@ -176,26 +172,15 @@ Furthermore, this tutorial tries to minimize the number of controllers, models, TT templates, and database tables. Although this does result in things being a bit contrived at times, the concepts should be applicable to more complex environments. More complete and complicated example -applications can be found in the C area of the Catalyst -Subversion repository at +applications can be found at +L and +in the C area of the Catalyst Subversion repository at L. ***Todo: update link above? -=head1 QUICK START -For those who want to get going quickly, here is a short "cookbook-style -recipe" to quickly get you up and running. Although there are many -different ways to get a Catalyst environment going, this tutorial has -been written with and tested against the Debian 6 Live CD, using the -steps in this Quick Start. - -If you want, you can follow the directions in this section and then jump -right to L of -the tutorial. However, it would be a good idea to come back and read the -sections below the Quick Start when you have time. Or, continue reading -those other sections for suggestions if you do not wish to use the -Debian 6 Live CD. +=head1 STARTING WITH THE TUTORIAL VIRTUAL MACHINE =over 4 @@ -206,60 +191,109 @@ L. =item 2 -Boot this disk, either in a physical machine, or possibly some sort -of virtual machine (using a VM can be a very handy way to practice). +Uncompress the image: + + tar zxvf CatalystTutorial.tgz =item 3 -Select "C" from the initial boot menu. +Boot the virtual machine using a tool like VMWare Player +L or VirtualBox +L. =item 4 -At the "C" prompt, type: +Once you get a login prompt, enter the username B and a password +for C. You should now be at a prompt that looks like: - sudo aptitude -y install subversion + login: root + password: catalyst + root@catalyst:~# =item 5 -If you want to be able to remotely SSH to this system, set a -password for root (you might want to do "dpkg -l | grep openssh-server" -to be sure the ISO image you downloaded has the SSH daemon installed... -if it's missing, do a "sudo aptitude -y install openssh-server"): +Type "C" to get the IP address assigned to the virtual +machine. You should get output along the lines of: - sudo passwd + eth0 Link encap:Ethernet HWaddr 00:01:22:3b:45:69 + inet addr:192.168.245.128 Bcast:192.168.245.255 Mask:255.255.255.0 ... -=item 6 +You want the IP address on the second line below the C interface. +The image it design to automatically use a DHCP-assigned address. + +If DHCP is not working or is not available in your location, most +virtual machine "host" environments let's you select between one of +several different types of networking between the "guest" and the "host" +machine. -Add the "unstable" Debian package repository: + 1) Bridged + 2) NAT + 3) Local host only - sudo vi /etc/apt/sources.list +The Tutorial Virtual Machine defaults to "Bridged" -- this should result +in the VM acting like another device on your network that will get a +different DHCP IP address than the host machine. The advantage of this +approach, is that you can easily SSH and web browse to the guest virtual +machine. -Add the following line to the bottom of this file: +In some environments, you might have better luck with "NAT" (Network +Address Translation) mode. With this configuration, the guest VM shares +the same IP address as the host machine. The downside of the approach +is that special configuration is required if you want to be able to SSH +or web browse to the guest VM (some virtual machine host environments +let you configure a "static NAT" or "port forwarding" to reach the guest +OS). - deb http://ftp.us.debian.org/debian/ unstable main +"Local host only" mode let's the guest VM and the host machine talk on a +"private subnet" that other devices in your network cannot reach. + +Consult the documentation on your virtual machine host environment for +help configuring the options above. + +=item 6 + +B, open an SSH client and connect to +the IP address found in the previous step. You should get a login +prompt (accept the SSH key). Login with the same username and password: +B / B =item 7 -Install Catalyst and related libraries: +B, change to the sample code directory for +Chapter 3 included with the Tutorial Virtual Machine and start the +Catalyst Development Server: - sudo aptitude update - sudo aptitude -y install libcatalyst-perl libdatetime-format-sqlite-perl \ - libdbix-class-encodedcolumn-perl sqlite3 libcatalyst-modules-perl \ - libperl6-junction-perl libcatalyst-modules-extra-perl \ - libdbix-class-timestamp-perl - sudo aptitude clean + $ cd Final/Chapter03 + $ perl scripts/myapp_server -r =item 8 -Test example code: +B, open a web browser and go to +B, where C is the IP address to your +virtual machine that you looked up in Step 5. For example, if your +virtual machine is using the IP address C<192.168.0.21>, you would put +the following URL into your web browser: + + http://192.168.0.21:3000/ + +Make sure you don't forget the B<:3000> to use port 3000 instead of the +usual port 80 that is used by HTTP by default. + +You should get a Catalyst Welcome Screen. If you do, feel free to jump +right in to L +of the tutorial. If you don't go get the Catalyst Welcome Screen, go +back and carefully check each of the steps above. + +=item 9 - mkdir test - cd test - svn co http://dev.catalystframework.org/repos/Catalyst/trunk/examples/Tutorial/MyApp_Chapter8 - cd MyApp_Chapter8/MyApp - CATALYST_DEBUG=0 prove -wl t - cd +B The VI/VIM editor is already installed on the Tutorial +Virtual Machine. In order to reduce the size of the download, Emacs is +not pre-installed. Since people obviously have very strong opinions +about which editor is best, :-) Debian fortunately make it very easy to +install Emacs: + + $ aptitude install emacs =back @@ -276,88 +310,47 @@ v5.80020 might show up as 5.8002): =item * -Debian 5 (Lenny) +Debian 6 (Squeeze) =item * -Catalyst v5.80020 (note: may show up as '5.8002' without the trailing zero) +Catalyst v5.90002 =item * -Catalyst::Devel v1.26 +Catalyst::Devel v1.34 =item * -DBIx::Class v0.08115 +DBIx::Class v0.08195 =item * -Catalyst::Model::DBIC::Schema v0.40 +Catalyst::Model::DBIC::Schema v0.54 =item * -Template Toolkit v2.20 - - -=item * - -Catalyst Plugins - -The plugins used in this tutorial all have sufficiently stable APIs that -you shouldn't need to worry about versions. However, there could be -cases where the tutorial is affected by what version of plugins you -use. This tutorial has been tested against the following set of plugins: +Template Toolkit v2.22 -=over 4 - -=item * - -Catalyst::Plugin::Authentication -- v0.10016 =item * -Catalyst::Plugin::Authorization::Roles -- v0.08 - -=item * - -Catalyst::Plugin::ConfigLoader -- v0.27 - -=item * - -Catalyst::Plugin::Session -- v0.29 - -=item * - -Catalyst::Plugin::Session::State::Cookie -- v0.17 - -=item * - -Catalyst::Plugin::Session::Store::File -- v0.18 - -=item * - -Catalyst::Plugin::StackTrace -- v0.11 - -=item * - -Catalyst::Plugin::Static::Simple -- v0.29 - -=back - -=item * - -HTML::FormFu -- v0.06001 +HTML::FormFu -- v0.09004 =item * B You can check the versions you have installed with the -following command: +following command (note the slash before the space): + + perl -M<_mod_name_>\ 999 + +or: perl -M<_mod_name_> -e 'print "$<_mod_name_>::VERSION\n"' For example: - perl -MCatalyst -e 'print "$Catalyst::VERSION\n";' + perl -MCatalyst::Devel\ 999 or: @@ -365,334 +358,26 @@ or: =item * -This tutorial will assume that the web browser is located on the same -system where the Catalyst development server is running, and therefore -use a URL of C (the Catalyst development server -defaults to port 3000, but can be changed with the "-p" option to the -development server). If you are running Perl on a different box than -where your web browser is located (or using a different port number via -the C<-p> I option to the development server), then you -will need to update the URL you use accordingly. - -Please Note: Depending on the web browser you are using, you might need +This tutorial will show URLs in the format of C, +but if you are running your web browser from outside the Tutorial +Virtual Machine, you will want to substitute the IP address of your VM +for the C in the URLs (again, you can get the IP address for +eth0 from the C command). For example, if your VM has an +IP address of 192.168.245.128, you will want to use a base URL of +C. Note that the development server +defaults to port 3000 (you can change with with the "-p" option on the +command line. + +B Depending on the web browser you are using, you might need to hit C or C to pull a fresh page when testing your application at various points (see L for a comprehensive list of options for each browser). Also, the C<-k> keepalive option to the development server can be necessary with some browsers (especially -Internet Explorer). ***Todo: is this still true? - -=back - - -=head1 CATALYST INSTALLATION - -Although Catalyst installation has been a challenge in the past, the -good news is that there are a growing number of options to eliminate (or -at least dramatically simplify) this concern. Although a compelling -strength of Catalyst is that it makes use of many of the modules in the -vast repository that is CPAN, this can complicate the installation -process if you approach it in the wrong way. Consider the following -suggestions on the most common ways to get started with a Catalyst -development environment: - -=over 4 - -=item * - -Debian - -The Debian 6 Live CD represents a great way for newcomers to experiment -with Catalyst. As a "live CD," you can simple boot from the CD, run a -few commands, and in a matter of minutes you should have a fully -function environment in which do this tutorial. B - -=over 4 - -=item * - -Download one of the ISO files from -L -(the current version at the time this was written was 6.0.1). You can -pick any one of the live CD variations will work, but you may wish to -consider the following points: - -=over 4 - -=item * - -"C" is probably the best all-around -option for most people because it includes many extra tools such as the -GCC compiler, therefore saving RAM (every package you need to install -when running from a Live CD consumes memory because RAM disk is being -used in lieu of real disk space). When initially booting under this -image, you may see some cryptic warning messages having to do with -various diagnostic tools it tries to load or enable, but you should be -able to safely ignore these. - -=item * - -"C" is a great option because of -its compact size, but you will probably need approximately 1 GB of RAM -in the computer where you will run the tutorial. Because the "standard" -live CD comes with with a minimal set of tools, we will have to install -extra packages (such as the GCC compiler), all of which will require RAM -when running from a live CD. - -=item * - -The other ISO images include different flavors of X-Windows desktop -managers. You can select one of these if you don't mind the larger -download size and prefer a graphical environment. Be aware that these -disks do not come with the extra tools found on the "rescue" image, so -you will need adequate RAM to be able to install them just as you would -under the "standard" image. B (If you are using one of the non- graphical images -discussed above, you can still use a graphical web browser from another -machine and point it to your Catalyst development machine.) - -=back - -=item * - -Boot off the CD. - -=item * - -Select "C" from the initial boot menu. - -=item * - -Once the system has booted to a "C" prompt, first -install the Subversion client in case you want to check out the -completed chapter example code: - - sudo aptitude -y install subversion - -If you want to be able to remotely SSH to this system, set a -password for root: - - sudo passwd - ... - -Then enter the following command to add the more current "unstable" -package repository so we get the latest versions of Catalyst and related -packages: - - sudo vi /etc/apt/sources.list - -Add the following line to the bottom of this file: - - deb http://ftp.us.debian.org/debian/ unstable main - -If you are not familiar with VI, you can move to the bottom of this file -and press the "o" key to insert a new line and type the line above. -Then press the "Esc" key followed by a colon (":"), the letters "wq" and -then the "Enter" key. The rest of the tutorial will assume that you -know how to use some editor that is available from the Linux -command-line environment. - -=item * - -Install Catalyst: - - sudo aptitude update - sudo aptitude -y install libcatalyst-perl libdatetime-format-sqlite-perl \ - libdbix-class-encodedcolumn-perl sqlite3 libcatalyst-modules-perl \ - libperl6-junction-perl libcatalyst-modules-extra-perl \ - libdbix-class-timestamp-perl - -Let it install (normally about a 30 to 90-second operation) and you are -done. (Note the '\' above. Depending on your environment, you might be -able to cut and paste the text as shown or need to remove the '\' -characters to that the command is all on a single line.) - -If you are using an image other than the "rescue" ISO, you will also need -to run the following command to install additional packages: - - sudo aptitude -y install gcc make libc6-dev - -If you are running from the Live CD, you probably also want to free up -some RAM disk space with the following: - - sudo aptitude clean - -NOTE: While the instructions above mention the Live CD because that -makes it easy for people new to Linux, you can obviously pick a -different Debian ISO image and install it to your hard drive. Although -there are many different ways to download and install Debian, the -"netinst" ISO image (such as "C" represents -a great option because it keeps your initial download small (but still -lets you install anything you want "over the network"). - -Here are some tips if you are running from a live CD and are running -out of disk space (which really means you are running out of RAM): - -=over 4 - -=item * - -Always run "C" after you install new packages to delete -the original .deb files (the files installed B the .deb package -B remain available, just the .deb package itself is deleted). - -=item * - -If you are installing modules from CPAN, you can free up some space with -"C" (change "/root/" in the previous command to -match your home directory or the location where CPAN has been configured -to perform build operations). - -=item * - -If necessary, you can remove the cached package information with the -command "C". You can later pull this -information again via the command "C". - -=item * - -You can save a small amount of space by commenting out the lines in -C that reference "deb-src" and -"security.debian.org". If you have already done an "C" -with these repositories enabled, you can use the tip in the previous -bullet to free the space up (and then do another "C"). - -=item * - -Although you can free up space by removing packages you installed since -you last booted (check out "C"), don't bother -trying to remove packages already available at the time of boot. Instead -of freeing up space, it will actual consume I space. (The live CD -uses these "burn in" packages right from the CD disk vs. first loading -them on the virtual RAM disk. However, if you remove them, the system -has to update various files, something that I consume some space -on the virtual RAM disk.) +Internet Explorer). =back -=back - -=item * - -Ubuntu - -Ubuntu is a popular offshoot of Debian. It provides cutting edge -versions of many common tools, application and libraries in an -easy-to-run live CD configuration (and because a single download option -can be used for both live CD and install-to-disk usage, it keeps your -download options nice and simple). As with Debian 6, you should be able -to generate a fully function Catalyst environment in a matter of -minutes. Here are quick instructions on how to use Ubuntu to prepare -for the tutorial: - -=over 4 - -=item * - -Download the Ubuntu Desktop edition and boot from the CD and/or image -file, select your language, and then "Try Ubuntu without any changes to -your computer." - -=item * - -Open a terminal session (click "Applications" in the upper-left corner, -then "Accessories," then "Terminal"). - -=item * - -Add the 'universe' repositories: - - sudo gedit /etc/apt/sources.list - -And remove the comments from the lines under the comments about the -'universe' repositories. - -=item * - -Install Catalyst: - - sudo aptitude update - sudo aptitude install libdbd-sqlite3-perl libcatalyst-perl libcatalyst-modules-perl libconfig-general-perl - -Accept all of the dependencies. Done. - -If you are running from the Live CD, you probably also want to free up -some disk space with the following: - - sudo aptitude clean - -NOTE: While the instructions above mention the live CD because that -makes it easy for people new to Linux, you can obviously also use one of -the options to install Ubuntu on your drive. - -=back - -=item * - -Matt Trout's C - -Available at L, -C can be a fairly painless way to get Catalyst up and -running. Just download the script from the link above and type -C. Depending on the speed of your Internet connection -and your computer, it will probably take 30 to 60 minutes to install -because it downloads, makes, compiles, and tests every module. But this -is an excellent way to automate the installation of all the latest -modules used by Catalyst from CPAN. - - -=item * - -Other Possibilities - -=over 4 - -=item * - -OpenBSD Packages - -The 2008 Advent Day 4 entry has more information on using OpenBSD -packages to quickly build a system: -L. - -=item * - -NetBSD Package Collection on Solaris - -The 2008 Advent Day 15 entry has more information on using C and -NetBSD packages on Solaris: -L. - -=item * - -CatInABox - -You can get more information at -L or -L. - -=item * - -Frank Speiser's Amazon EC2 Catalyst SDK - -There are currently two flavors of publicly available Amazon Machine -Images (AMI) that include all the elements you'd need to begin -developing in a fully functional Catalyst environment within minutes. -See L -for more details. - -=back - -=back - -For additional information and recommendations on Catalyst installation, -please refer to -L. - =head1 DATABASES @@ -707,41 +392,8 @@ change between database systems: most of the code generally remains the same. -=head1 WHERE TO GET WORKING CODE - -Each chapter of the tutorial has complete code available as a tarball in -the main Catalyst Subversion repository (see the note at the beginning -of each part for the appropriate svn command to use). - -B You can run the test cases for the final code through Chapter 8 -with the following commands: - - svn co http://dev.catalystframework.org/repos/Catalyst/trunk/examples/Tutorial/MyApp_Chapter8 - cd MyApp_Chapter8/MyApp - CATALYST_DEBUG=0 prove -wl t - -If you wish to include the L section in your tests, -substitute C for C in the URL -above (don't forget to "cd" out of the Ch8 directory if you ran the code above). - - svn co http://dev.catalystframework.org/repos/Catalyst/trunk/examples/Tutorial/MyApp_Chapter9_FormFu - cd MyApp_Chapter9_FormFu/MyApp - CATALYST_DEBUG=0 prove -wl t - -You can also fire up the application under the development server that is conveniently -built in to Catalyst. Just issue this command from the C directory where you -ran the test suite above: - - script/myapp_server.pl - -And the application will start. You can try out the application by -pulling up C in your web browser (as mentioned -earlier, change C to a different IP address or DNS name if -you are running your web browser and your Catalyst development on -different boxes). We will obviously see more about how to use the -application as we go through the remaining chapters of the tutorial, but -for now you can log in using the username "test01" and a password of -"mypass". +You can jump to the next chapter of the tutorial here: +L =head1 AUTHOR