Presentation is loading. Please wait.

Presentation is loading. Please wait.

Introduction to Catalyst - YAPC::EU 2005 Braga, Portugal 1 Catalyst in 40 minutes An Introduction to Catalyst YAPC::EU 2005 Braga, Portugal Marcus Ramberg,

Similar presentations


Presentation on theme: "Introduction to Catalyst - YAPC::EU 2005 Braga, Portugal 1 Catalyst in 40 minutes An Introduction to Catalyst YAPC::EU 2005 Braga, Portugal Marcus Ramberg,"— Presentation transcript:

1 Introduction to Catalyst - YAPC::EU 2005 Braga, Portugal 1 Catalyst in 40 minutes An Introduction to Catalyst YAPC::EU 2005 Braga, Portugal Marcus Ramberg, The Cabal

2 Introduction to Catalyst - YAPC::EU 2005 Braga, Portugal 2 About me ● Name: Marcus Ramberg ● A/S/L: 28/No thanks, I'm married/Oslo,Norway ● Co-maintainer of Catalyst ● mramberg@cpan.org ● Oslo Perlmonger ● Working for ABC Startsiden ● draven @ magnet :-)

3 Introduction to Catalyst - YAPC::EU 2005 Braga, Portugal 3 Overview ● What is Catalyst? ● Catalyst is a new MVC framework for Perl. Catalyst borrows from other frameworks, such as Ruby on Rails and Apache Struts, but its main goal is to be a flexible, powerful, and fast framework for developing any type of web project in Perl. ➔ Introduction to Catalyst. ➔ Overview ➔ Features ➔ Ajax autocompletion screencast ➔ Scaffolding screencast ➔ From scaffolding to app – BookDB ➔ Conclusion

4 Introduction to Catalyst - YAPC::EU 2005 Braga, Portugal 4 Overview

5 Introduction to Catalyst - YAPC::EU 2005 Braga, Portugal 5 Some Numbers ✔ 10 Engines (Apache,FastCGI,Standalone +++) ✔ 8 models (CDBI,Tangram,DBIC, Xapian +++) ✔ 6 supported views ( TT,Mason,H-T,Petal +++) ✔ 48 plugins in trunk (Session, Forms, Cache +++) ✔ 16,539 Total Physical Source Lines of Code (Catalyst trunk) ✔ 445 tests ✔ 1077 committed revisions ✔ 50% chance Gabbana is drunk

6 Introduction to Catalyst - YAPC::EU 2005 Braga, Portugal 6 The Context object ● traditionally named $c ● Instance of your main application ● Subclass of the Catalyst application ● All plugins are part of the context through multiple inheritance ● Passed around with the forwarding mechanism to controllers and views ● Provides access to Request and Response objects as well as the Stash.

7 Introduction to Catalyst - YAPC::EU 2005 Braga, Portugal 7 Request / Response ● Platform independent API ● Engines populate Request before dispatching, and parse Response after the actions ● Provides unified access to request params - – request->param('name') ● Provides a simple access for HTTP Uploads ● Using HTTP::Headers for request and response headers ● Currently using scalars. Next release will support IO for uploads and serving large content.

8 Introduction to Catalyst - YAPC::EU 2005 Braga, Portugal 8 The Stash ● “An universal hash” – $c->stash->{item}=MyApp::M::Item->retrieve($item_id); ● Request lifetime ● How to communicate between actions, and with templates ● Variables in stash are automatically-exposed to views.

9 Introduction to Catalyst - YAPC::EU 2005 Braga, Portugal 9 The Dispatcher ● Dispatches to actions based on URI path ● Actions defined as attributes: – sub hello : Local {} ● All actions listed at startup ● Matching private action namespace for forwarding. – c->forward('/ / '); – works like a eval cage for a function call – continues processing! If that`s not what you want, use detach – pass arguments with a hashref ● Redispatch within your application? – Catalyst::Plugin::SubRequest

10 Introduction to Catalyst - YAPC::EU 2005 Braga, Portugal 10 The Actions ● action types: – : Global – matches /, no matter what controller – : Local – controller sensitive. / / – : Path – Matches specified path; sub test : Path('/t/t/test') – : Regex – regular expressions – : Private – not available from URL – only for forwarding ● Builtin: – default - fallback – auto – allows you to stop dispatching – return 0; – begin – before dispatching – can be overridden in Controllers – end – after dispatching – Typically forward to view.

11 Introduction to Catalyst - YAPC::EU 2005 Braga, Portugal 11 Development Environment ● Code Generation ● Standalone Server ● Debug screen ● Extendable Logging integration – Catalyst::Log::Dispatch – Catalyst::Log::Color ● Full API documentation

12 Introduction to Catalyst - YAPC::EU 2005 Braga, Portugal 12 Deployment ● Engines provide platform independence – Apache (ModPerl 1/1.9/2) – IIS (FastCGI) – Zeus – POE – SpeedyCGI – Standalone Server ● Helper makes framework for installation/testing ● Uses standard CPAN deployment mechanisms ● Auto-detection of Application root ● Easily use external configuration files.

13 Introduction to Catalyst - YAPC::EU 2005 Braga, Portugal 13 Auto complete screencast ● Making a simple Catalyst application ● Like “Google Suggest” ● AJAX Powered ● Using Catalyst::Plugin::Prototype – Wrapping HTML::Prototype – A port of the Rails javascript helpers. – Now also including script.aculo.us effects, draganddrop and controls library. ● scripts/myapp_create.pl Prototype to generate javascript files for inclusion in your app.

14 Introduction to Catalyst - YAPC::EU 2005 Braga, Portugal 14 Scaffolding ● Using the Catalyst Helper API – scripts/myapp_create.pl controller Scaffolding ● Simple scaffolding. Low on magic, high on carbohydrates. ● Build your app around the Scaffolding, not the other way around. ● Use as much or as little as makes sense. ● Lets watch the Screencast

15 Introduction to Catalyst - YAPC::EU 2005 Braga, Portugal 15 BookDB ● From Scaffolding to application ● Maypole CRUD application I built in january ● So let us take the bookdb.sql and see what we can do. ● First – build the skeleton – catalyst.pl BookDB ● Make the db – sqlite3 book.db <../bookdb.sql ● And then the model – script/bookdb_create.pl model BookDB CDBI dbi:sqlite:book.db

16 Introduction to Catalyst - YAPC::EU 2005 Braga, Portugal 16 BookDB ● Create the view: – script/bookdb_create.pl view TT TT ● Now let's try to get the scaffolding up: – script/bookdb_create.pl controller Book Scaffold BookDB::Book ● Add a few plugins to Bookdb.pm: – use Catalyst qw/-Debug FormValidator FillInForm DefaultEnd/; ● And while we are there, let's change Default: – $c->forward('/book/default'); ● Finally, add a couple of required CDBI plugins: – additional_base_classes => [qw/Class::DBI::AsForm Class::DBI::FromForm/],

17 Introduction to Catalyst - YAPC::EU 2005 Braga, Portugal 17 BookDB ● All right, scaffolding is up and running, now what? ● Those columns are a bit messy. – __PACKAGE__->columns(list=>qw/title author publisher year/); – [% FOR column = table_class.columns('list') %] ● ● Want fancy labels? Write them. ● Validation? Change the DFV profile: – required => [qw /title author/], – constraints => {year => qr/^\d{4}$/}

18 Introduction to Catalyst - YAPC::EU 2005 Braga, Portugal 18 ● Adding books from Amazon – Thanks to Simon Cozens for this trick. ● Adding basic support for checking out books ● At this point we hand it over to Gabb! ● Code available in Catalyst trunk – http://dev.catalyst.perl.org/repos/Catalyst/trunk/example s/BookDB http://dev.catalyst.perl.org/repos/Catalyst/trunk/example s/BookDB

19 Introduction to Catalyst - YAPC::EU 2005 Braga, Portugal 19 Handel Demo ● Handel is a quick and not-so-dirty ecommerce framework with AxKit taglib support and TT2 (Template Toolkit) support. It was started for the conversion of an IIS/ASP based commerce site to Apache/ModPerl, but CLACO decided to release it to CPAN. Handel also works well with Catalyst: – catalyst.pl MyApp – sqlite < handel.sql – myapp_create.pl Handel::Scaffold dbi:SQLite:dbname=/tmp/handel.db – http:///localhost:3000/cart/ ● Helpers soon to be released

20 Introduction to Catalyst - YAPC::EU 2005 Braga, Portugal 20 Questions? ● Q: So Catalyst looks good, but I heard it was part of a secret plan by The Cabal to undermine CPAN by flooding it with Catalyst modules? ● A: There is no Cabal. ● Others? No? Really? Ok, if you have a question later: ● mailinglist: catalyst-subscribe@lists.rawmode.org ● irc #catalyst @ irc.perl.org ● My phone number: ● Only for hot chicks ;-)


Download ppt "Introduction to Catalyst - YAPC::EU 2005 Braga, Portugal 1 Catalyst in 40 minutes An Introduction to Catalyst YAPC::EU 2005 Braga, Portugal Marcus Ramberg,"

Similar presentations


Ads by Google