あたらしものずきっ!

試してみたものとか、遊んでみたものを色々記してみます。

Catalystふれはじめ

軽量フレームワークは安定してる訳じゃないと思うので、思い切ってちょっとハードル高めかもしれないCatalystに触る事にした。いい加減なにか一つのフレームワークを弄り尽くせるようにしておきたいし。
参考 PHP使いによるCatalyst初心者記事

導入に必要なモジュールは

%sudo cpan -i Catalyst

の他、上記参考URLに書かれているモジュールをいれた。

アプリケーションの新規作成

%catalyst.pl iTSContact
created "iTSContact"
created "iTSContact/script"
created "iTSContact/lib"
created "iTSContact/root"
created "iTSContact/root/static"
created "iTSContact/root/static/images"
created "iTSContact/t"
created "iTSContact/lib/iTSContact"
created "iTSContact/lib/iTSContact/Model"
created "iTSContact/lib/iTSContact/View"
created "iTSContact/lib/iTSContact/Controller"
created "iTSContact/itscontact.conf"
created "iTSContact/lib/iTSContact.pm"
created "iTSContact/lib/iTSContact/Controller/Root.pm"
created "iTSContact/README"
created "iTSContact/Changes"
created "iTSContact/t/01app.t"
created "iTSContact/t/02pod.t"
created "iTSContact/t/03podcoverage.t"
created "iTSContact/root/static/images/catalyst_logo.png"
created "iTSContact/root/static/images/btn_120x50_built.png"
created "iTSContact/root/static/images/btn_120x50_built_shadow.png"
created "iTSContact/root/static/images/btn_120x50_powered.png"
created "iTSContact/root/static/images/btn_120x50_powered_shadow.png"
created "iTSContact/root/static/images/btn_88x31_built.png"
created "iTSContact/root/static/images/btn_88x31_built_shadow.png"
created "iTSContact/root/static/images/btn_88x31_powered.png"
created "iTSContact/root/static/images/btn_88x31_powered_shadow.png"
created "iTSContact/root/favicon.ico"
created "iTSContact/Makefile.PL"
created "iTSContact/script/itscontact_cgi.pl"
created "iTSContact/script/itscontact_fastcgi.pl"
created "iTSContact/script/itscontact_server.pl"
created "iTSContact/script/itscontact_test.pl"
created "iTSContact/script/itscontact_create.pl"

開発用webサーバの起動。

%cd iTSContact
%perl script/itscontact_server.pl

とりあえずcontrollerを一つ作成。

%perl script/itscontact_create.pl controller appinfo
 exists "/Users/haoyayoi/Sites/iTSContact/script/../lib/iTSContact/Controller"
 exists "/Users/haoyayoi/Sites/iTSContact/script/../t"
created "/Users/haoyayoi/Sites/iTSContact/script/../lib/iTSContact/Controller/appinfo.pm"
created "/Users/haoyayoi/Sites/iTSContact/script/../t/controller_appinfo.t"

Hello, Worldしてみる。

use strict;
use warnings;
use parent 'Catalyst::Controller';

sub index :Path :Args(0) {
    my ( $self, $c ) = @_;
    $c->response->body('Hello, World!');
}

=head1 NAME

が、

Matched iTSContact::Controller::appinfo in appinfo.

と出る始末。該当分がpodのhead1 METHODSに書かれてので試しに削除したらうごく。なんかすっきりしない。

記述順を変更した

一度作成したappinfoを削除して再作成し、直後のpodの構成を再確認したところ、

=head2 index
#dist
=cut

の並びになっていなければならないものが、

=head2 index
=cut
#dist

となっていた。コードの一部としてコンパイルされていた模様。書き直した結果「Page not found」と表示された。

=head2 index
#=cut
sub index :Path :Args(0) {
    my ( $self, $c ) = @_;

    $c->response->body('Matched iTSContact::Controller::appinfo in appinfo.');
}
=cut