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