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
- Hello/
「root/」には、htdocs、テンプレート、CSS、javascriptを置く。
「script/」には、スクリプトが置いてある。
- 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>