catalyst入門メモ

catalystインストール

Catalystの最低限のモジュールとよく使うモジュールをまとめてインストール。

sudo perl -MCPAN -e 'install Task::Catalyst'

 
 

Helloを作成

catalyst.plでHelloを作成。

$ catalyst.pl Hello
$ cd Hello

「lib/」には、アプリケーションのメインコードを置く。

  • lib/
    • Hello/
      • Controller
      • Model
      • View
    • Hello.pm

「root/」には、htdocs、テンプレート、CSSjavascriptを置く。

「script/」には、スクリプトが置いてある。

 
 

Hello World!」を表示するコントローラ

「lib/Hello/Controller/Root.pm」にhelloメソッドを作成

sub hello : Global {
   my ( $self, $c ) = @_;

   $c->response->body("Hello, World!");
}

テスト用サーバを起動する。
「-r」オプションを使うと、アプリケーションが変更された事を感知して自動で再起動するようになる。

$ perl script/hello_server.pl -r

http://localhost:3000/hello」にブラウザでアクセスする。
 
 

ViewとTemplateを使ってHello, World!

TT viewを作成。

$ script/hello_create.pl view TT TT

lib/Hello/View/TT.pmが作成される。
 
root/hello.ttテンプレートを作成する。

[% META title = 'Hello, World!' %]
<p>
   This is a TT view template, located in the 'root/' directory
</p>

 
lib/Hello/Controller/Root.pmにhelloメソッドを作成。

sub hello : Global {
   my ( $self, $c ) = @_;
   $c->stash->{template} = 'hello.tt';
}

 
http://localhost:3000/hello」でアクセスすると結果が表示される。
 
 

コントローラとアクションの作成

"Site"という名前のコントローラを作成。

$ script/hello_create.pl controller Site

lib/Hello/Controller/Site.pmが作成される。
 
Site.pmにtestメソッドを作成。

sub test : Local {
   my ( $self, $c ) = @_;

   $c->stash->{username} = 'Hato";
   $c->stash->{template} = 'site/test.tt';
}

Local属性は、"controller/method"という形のURLでアクセスできるようにする。
今の例だと"site/test"でアクセスできるようになっている。
 
テンプレートを指定しているが本来は必要ない。デフォルトでは、"controller/method.tt"のルールでテンプレートの名前が決まる。このルール以外で、テンプレートを指定したい場合は、ハッシュキー"template"に値をセットする。
 
rootディレクトリにsiteディレクトリを作成する。

$ mkdir root/site

"root/site"にtest.ttを作成する。

[% META title = 'Hello, World!' %]
<p> Hello, [% username %]! </p>

 
http://localhost:3000/site/testにアクセス。