新年だからCatalystでも勉強しよう
新しい年になったことだし、ちょっと変わったことでもやってみましょうということで、いまさらCatalyst入門。
「Perl の MVC フレームワーク Catalyst に入門してみた : NDO::Weblog」をテキストにして、手持ちのFedoraCore4マシンにインストールすることから始めてみた。
んがっ! ……はまる。
[naoya@colinux naoya]$ sudo perl -MCPAN -e 'install Bundle::Catalyst'
[naoya@colinux naoya]$ sudo perl -MCPAN -e 'install Bundle::Catalyst::Everything'
これでいけるかなーと思ったら、全然インストールできる気配なし。しかたないので、
sudo perl -MCPAN -e 'install Task::Catalyst'
これでどかっとインストール。時間はかかるけど、これで何とかインストール終了。
MySQLを使うことにして、説明通りにテーブル作成。で、
catalyst.pl CHE::TinyURL
これで、プロジェクトをざくっと作成。いえい。
script/che_tinyurl_create.pl view TT TT
ここはさくりといったんだけど、
script/ndo_tinyurl_create.pl model CDBI CDBI DBI:mysql:tinyurl nobody nobody
ここでまたつまづく。
script/che_tinyurl_create.pl model DBIC DBIC DBI:mysql:tinyurl nobody nobody
としないと駄目みたい。CDBIでなくてDBICなわけね。
これ、どうも新しいバージョンのCatalystではデフォルトになってるみたい(hide-k.net#blog: Catalyst::Bundle in trunk)。うむむ。
めげずに先に進みます。TinyURL.pmにコードを追加していくよ。が、ここでも、ちょっと変更点が。
TinyURL::V::TTとかTinyURL::M::CDBI::Urlmapなんてところは、TinyURL::View::TTとかTinyURL::Model::CDBI::Urlmapとかにしてあげなくちゃ駄目なのね。これはディレクトリ構造が変わったんですかね。
ま、そのあたりはさくっと乗り越えいざ実行!
script/che_tinyurl_server.pl
ぽちっとな。
おおお! 動いた。入力フォームが出ましたよ!
で、URLの入力後画面遷移もおっけー!
……なのに、リダイレクト処理がうまくいかないみたい。
Caught exception "Can't locate object method "retrieve" via package "CHE::TinyURL::Model::DBIC::Urlmap" at /home/cheebow/CHE-TinyURL/script/../lib/CHE/TinyURL.pm line 79."
というエラーメッセージが僕を責める。なんでやねん!
もう、全然わかんない。もう、Catalyst嫌い!
ふてくされて昼飯を食べる。別の仕事もしてみる。
で、ふとググると「blog.nomadscafe.jp: DBIx::ClassやFormValidator::Simple::Plugin::DBIC::UniqueをつかってTropy」このページの
あとは、retrieveからfindへの変更をしたぐらいで、簡単に動くものはつくれました。
この記述を発見!
これだっ! と
sub redirect : Regex('^(\d+)) {
my ($self, $c) = @_;
my $map = NDO::TinyURL::M::CDBI::Urlmap->retrieve($c->req->snippets->[0]);
$map ? $c->res->redirect($map->url) : $c->res->redirect('/');
}
この部分のretrieveをfindに書き換えたら、うふ、うふふふ。動くじゃん。
いやっほー。
おおお。感激。
Ruby on Railsよりも、どちらかというとCatalystの方が馴染める感じ。
でも、やっぱ、お作法がいろいろあるわけで、フレームワークを使いこなすには結構な時間がかかりそう。
ま、しかし、良い勉強になりましたー。
投稿者 CHEEBOW : 2006年1月 6日 16:44
Tweet
[ Development ]
【お知らせ】音楽に関することはこちらのブログで書いています。くじら音楽部::BLOG
