updated instructions to only give checkout instructions for reference impl of tutoria...
[catagits/Catalyst-Runtime.git] / lib / Catalyst / Manual / Tutorial / Intro.pod
CommitLineData
4d583dd8 1=head1 NAME
2
64ccd8a8 3Catalyst::Manual::Tutorial::Intro - Catalyst Tutorial - Part 1: Introduction
4d583dd8 4
5
4d583dd8 6=head1 OVERVIEW
7
653f4595 8This is B<Part 1 of 9> of the Catalyst Tutorial.
4d583dd8 9
64ccd8a8 10L<Tutorial Overview|Catalyst::Manual::Tutorial>
4d583dd8 11
12=over 4
13
14=item 1
15
16B<Introduction>
17
18=item 2
19
20L<Catalyst Basics|Catalyst::Manual::Tutorial::CatalystBasics>
21
22=item 3
23
653f4595 24L<Basic CRUD|Catalyst::Manual::Tutorial::BasicCRUD>
4d583dd8 25
26=item 4
27
28L<Authentication|Catalyst::Manual::Tutorial::Authentication>
29
30=item 5
31
32L<Authorization|Catalyst::Manual::Tutorial::Authorization>
33
34=item 6
35
36L<Debugging|Catalyst::Manual::Tutorial::Debugging>
37
38=item 7
39
40L<Testing|Catalyst::Manual::Tutorial::Testing>
41
42=item 8
43
653f4595 44L<Advanced CRUD|Catalyst::Manual::Tutorial::AdvancedCRUD>
4d583dd8 45
46=item 9
47
653f4595 48L<Appendices|Catalyst::Manual::Tutorial::Appendices>
4d583dd8 49
50=back
51
4d583dd8 52=head1 DESCRIPTION
53
653f4595 54This tutorial provides a multipart introduction to the Catalyst web
55framework. It seeks to provide a rapid overview of many of its most
56commonly used features. The focus is on the real-world best practices
64ccd8a8 57required in the construction of nearly all Catalyst applications.
4d583dd8 58
64ccd8a8 59Although the primary target of the tutorial is users new to the Catalyst
60framework, experienced users may wish to review specific sections (for
61example, how to use DBIC for their model classes or how to add
62authentication and authorization to an existing application).
4d583dd8 63
936a5dd5 64You can obtain the code for all the tutorial examples from the
65catalyst subversion repository by issuing the command:
66
67 svn co http://dev.catalyst.perl.org/repos/Catalyst/tags/examples/Tutorial/MyApp/5.7/ CatalystTutorial
68
69This will download the current code for each tutorial chapter in the
70CatalystTutorial directory. Each example application directory has
71the same name as the tutorial chapter.
72
4d583dd8 73Subjects covered include:
74
75=over 4
76
77=item *
78
79A simple application that lists and adds books.
80
81=item *
82
14e6feb0 83The use of L<DBIx::Class|DBIx::Class> (DBIC) for the model.
4d583dd8 84
85=item *
86
653f4595 87How to write CRUD (Create, Read, Update, and Delete) operations in
88Catalyst.
4d583dd8 89
90=item *
91
92Authentication ("auth").
93
94=item *
95
96Role-based authorization ("authz").
97
98=item *
99
8e956464 100Attempts to provide an example showing current (5.7XXX) Catalyst
14e6feb0 101practices. For example, the use of
33aee7ed 102L<Catalyst::Action::RenderView|Catalyst::Action::RenderView>,
14e6feb0 103DBIC, L<Catalyst::Plugin::ConfigLoader|Catalyst::Plugin::ConfigLoader>
104with C<myapp.yml>, the use of C<lib/MyApp/Controller/Root.pm>
105vs. C<lib/MyApp.pm>, etc.
4d583dd8 106
107=item *
108
653f4595 109The use of Template Toolkit (TT) and the
14e6feb0 110L<Catalyst::Helper::View::TTSite|Catalyst::Helper::View::TTSite>
111view helper.
4d583dd8 112
113=item *
114
653f4595 115Useful techniques for troubleshooting and debugging Catalyst
116applications.
4d583dd8 117
118=item *
119
653f4595 120The use of SQLite as a database (with code also provided for MySQL and
121PostgreSQL).
4d583dd8 122
123=item *
124
cc548726 125The use of L<HTML::Widget|HTML::Widget> for automated form processing
126and validation.
4d583dd8 127
128=back
129
653f4595 130This tutorial makes the learning process its main priority. For
8112f931 131example, the level of comments in the code found here would likely be
653f4595 132considered excessive in a "normal project". Because of their contextual
133value, this tutorial will generally favor inline comments over a
134separate discussion in the text. It also deliberately tries to
135demonstrate multiple approaches to various features (in general, you
136should try to be as consistent as possible with your own production
137code).
4d583dd8 138
64ccd8a8 139Furthermore, this tutorial tries to minimize the number of controllers,
140models, TT templates, and database tables. Although this does result in
141things being a bit contrived at times, the concepts should be applicable
142to more complex environments. More complete and complicated example
143applications can be found in the C<examples> area of the Catalyst
144Subversion repository at
145L<http://dev.catalyst.perl.org/repos/Catalyst/trunk/examples/>.
4d583dd8 146
64ccd8a8 147B<Note:> There are a variety of other introductory materials available
148through the Catalyst web site and at
149L<http://dev.catalyst.perl.org/wiki/UserIntroductions> and
150L<http://dev.catalyst.perl.org/>.
4d583dd8 151
4d583dd8 152=head1 VERSIONS AND CONVENTIONS USED IN THIS TUTORIAL
153
653f4595 154This tutorial was built using the following resources. Please note that
155you may need to make adjustments for different environments and
64ccd8a8 156versions:
4d583dd8 157
158=over 4
159
160=item *
161
162OS = CentOS 4 Linux (RHEL 4)
163
164=item *
165
14e6feb0 166Catalyst v5.6902
4d583dd8 167
168=item *
169
14e6feb0 170DBIx::Class v0.06003
4d583dd8 171
172=item *
173
174Catalyst Plugins
175
653f4595 176The plugins used in this tutorial all have sufficiently stable APIs that
177you shouldn't need to worry about versions. However, there could be
178cases where the tutorial is affected by what version of plugins you
179use. The plugins used for this tutorial are:
4d583dd8 180
181=over 4
182
183=item *
184
185Catalyst::Plugin::Authentication -- 0.07
186
187=item *
188
cc548726 189Catalyst::Plugin::Authentication::Credential::Password -- 0.07
4d583dd8 190
191=item *
192
193Catalyst::Plugin::Authentication::Store::DBIC -- 0.06
194
195=item *
196
197Catalyst::Plugin::Authorization::ACL -- 0.06
198
199=item *
200
201Catalyst::Plugin::Authorization::Roles -- 0.04
202
203=item *
204
205Catalyst::Plugin::ConfigLoader -- 0.07
206
207=item *
208
4d583dd8 209Catalyst::Plugin::HTML::Widget -- 1.1
210
211=item *
212
213Catalyst::Plugin::Session -- 0.05
214
215=item *
216
217Catalyst::Plugin::Session::FastMmap -- 0.12
218
219=item *
220
221Catalyst::Plugin::Session::State::Cookie -- 0.02
222
223=item *
224
14e6feb0 225Catalyst::Plugin::Session::Store::FastMmap -- 0.02
4d583dd8 226
227=item *
228
14e6feb0 229Catalyst::Plugin::StackTrace -- 0.04
4d583dd8 230
231=item *
232
233Catalyst::Plugin::Static::Simple -- 0.14
234
235=back
236
237=item *
238
64ccd8a8 239Since the web browser is being used on the same box where Perl and the
240Catalyst development server is running, the URL of
241C<http://localhost:3000> will be used (the Catalyst development server
242defaults to port 3000). If you are running Perl on a different box than
243where your web browser is located (or using a different port number via
244the C<-p> I<port_number> option to the development server), then you
245will need to update the URL you use accordingly.
4d583dd8 246
247=item *
248
64ccd8a8 249Depending on the web browser you are using, you might need to hit
250C<Shift+Reload> to pull a fresh page when testing your application at
251various points. Also, the C<-k> keepalive option to the development
252server can be necessary with some browsers (especially Internet
253Explorer).
4d583dd8 254
255=back
256
4d583dd8 257=head1 CATALYST INSTALLATION
258
64ccd8a8 259Unfortunately, one of the most daunting tasks faced by newcomers to
260Catalyst is getting it installed. Although a compelling strength of
653f4595 261Catalyst is that it can easily make use of many of the modules in the
262vast repository that is CPAN, this can result in initial installations
263that are both time consuming and frustrating. However, there are a
264growing number of methods that can dramatically ease this undertaking.
265Of these, the following are likely to be applicable to the largest
266number of potential new users:
4d583dd8 267
268=over 4
269
270=item *
271
64ccd8a8 272Matt Trout's C<cat-install>
4d583dd8 273
64ccd8a8 274Available at L<http://www.shadowcatsystems.co.uk/static/cat-install>,
275C<cat-install> can be a quick and painless way to get Catalyst up and
276running. Just download the script from the link above and type C<perl
277cat-install>.
4d583dd8 278
279=item *
280
281Chris Laco's CatInABox
282
64ccd8a8 283Download the tarball from
284L<http://handelframework.com/downloads/CatInABox.tar.gz> and unpack it
285on your machine. Depending on your OS platform, either run C<start.bat>
286or C<start.sh>.
4d583dd8 287
288=item *
289
290Pre-Built VMWare Images
291
64ccd8a8 292Under the VMWare community program, work is ongoing to develop a number
293of VMWare images where an entire Catalyst development environment has
294already been installed, complete with database engines and a full
295complement of Catalyst plugins.
4d583dd8 296
297=back
298
653f4595 299For additional information and recommendations on Catalyst installation,
14e6feb0 300please refer to
301L<Catalyst::Manual::Installation|Catalyst::Manual::Installation>.
4d583dd8 302
14e6feb0 303B<NOTE:> Step-by-step instructions to replicate the environment on
64ccd8a8 304which this tutorial was developed can be found at
14e6feb0 305L<Catalyst::Manual::Installation::CentOS4|Catalyst::Manual::Installation::CentOS4>.
64ccd8a8 306Using these instructions, you should be able to build a complete CentOS
3074.X server with Catalyst and all the plugins required to run this
308tutorial.
4d583dd8 309
4d583dd8 310=head1 DATABASES
311
653f4595 312This tutorial will primarily focus on SQLite because of its simplicity
313of installation and use; however, modifications in the script required
314to support MySQL and PostgreSQL will be presented in Appendix 2.
4d583dd8 315
64ccd8a8 316B<Note:> One of the advantages of the MVC design patterns is that
317applications become much more database independent. As such, you will
318notice that only the C<.sql> files used to initialize the database
653f4595 319change between database systems: the Catalyst code generally remains the
320same.
4d583dd8 321
322=head1 WHERE TO GET WORKING CODE
323
64ccd8a8 324Each part of the tutorial has complete code available in the main
325Catalyst Subversion repository (see the note at the beginning of each
326part for the appropriate svn command to use). Additionally, the final
327code is available as a ready-to-run tarball at
13852f97 328L<http://dev.catalyst.perl.org/repos/Catalyst/trunk/examples/Tutorial/Final_Tarball/MyApp.tgz>.
4d583dd8 329
a63e6e67 330
4d583dd8 331=head1 AUTHOR
332
333Kennedy Clark, C<hkclark@gmail.com>
334
eed93301 335Please report any errors, issues or suggestions to the author. The
7d310f12 336most recent version of the Catalyst Tutorial can be found at
eed93301 337L<http://dev.catalyst.perl.org/repos/Catalyst/trunk/Catalyst-Runtime/lib/Catalyst/Manual/Tutorial/>.
4d583dd8 338
64ccd8a8 339Copyright 2006, Kennedy Clark, under Creative Commons License
340(L<http://creativecommons.org/licenses/by-nc-sa/2.5/>).
4d583dd8 341
4d583dd8 342