Catalyst

昨日、とりあえずインストールは完了したのでアプリケーションをサンプルで作ってみることにする。私のPCはWindows XP Proだが、特に問題なくインストールは完了した。
とりあえず、http://search.cpan.org/~mramberg/Catalyst-5.10/lib/Catalyst/Manual/Intro.pod#Install
に記載されているように、MyAppというアプリケーションを作成してみる。コマンドラインからcatalyst.pl(perl/bin以下に保存されている)を実行するのだが、カレントディレクトリにスケルトンが作成されてしまうので注意。

MyApp/script/myapp_server.plを起動すると、このwebアプリケーション専用の小型webサーバーが立ち上がる。すると以下のようなメッセージが表示される。
You can connect to your server at http://pc29144c:3000/
ので、このアドレスにブラウザーを通じてアクセスすると、MyAppアプリケーションを実行できるようだ。pc29144cというのは私のPC名なので、実行環境により異なる。

[Fri Apr 29 18:14:00 2005] [catalyst] [error] Caught exception in engine "Can't locate object method "header_field_names" via package "HTTP::Headers" at C:/Perl/site/lib/Catalyst/Engine/Test.pm line 70."
というメッセージが表示されてしまった。どうやら、インストールされているHTTP::Headersのバージョンが古いようだ。libwww-perlライブラリのバージョンアップを行おうとしたが、PPMが提供されていない。しかたがないのでCPANからlibwww-perl-5.803をダウンロードしてきた。このライブラリはmakefileを作成するさいにいくつかの質問をしてくる。意味がよく分からないのでとりあえずすべてデフォルト設定にしておいた。libwww-perlのバージョンアップが完了したら、HTTP::Headersのバージョンが1.47から1.62に上がっていた。
その後myapp_server.plの再起動を行い、ブラウザに正常にメッセージ(Congratulations, MyApp is on Catalyst!)が表示された。

http://qootas.org/archives/2005/03/perl_on_rails_c.html
これと同じアプリケーションを作るべく、mysqlに以下のsqlを実行させた。
CREATE TABLE tinyurl (
id VARCHAR(250) PRIMARY KEY,
longurl VARCHAR(250)
);
このテーブルを元に、modelを作成するため、
>perl myapp_create.pl model CDBI CDBI DBI:mysql:test root password
(testはデータベース名、rootはID、passwordはパスワードを意味する)をコマンドラインから実行すると、以下のようなエラーメッセージが表示された。
created "C:\PerlWork\MyApp\lib\MyApp\M\CDBI.pm"
Can't locate object method "set_db" via package "MyApp::M::CDBI::Tinyurl" at C:/Perl/site/lib/Class/DBI/Loader/Generic.pm line 180, line 1.
Class::DBI::Loaderがおかしいようだが、対処法が分からず。