Catalyst 5.90060 で簡単!掲示板システムになろうとしている途中のサンプル

なはずだったんだが、結構はまってしまいました。何にはまったのかというと、lighttpd の名前空間での妙な動作にです。
具体的には、例えば http://neoflow.local/hoge/fuga というメソッドにアクセスしようとControllerやViewで $c->uri_for(); を利用すると http://neoflow.local/hoge/fuga/hoge/fuga みたいになってしまう。
スタンドアロンサーバでは問題ないので、lighttpd の問題だと帰結したのだが以外と情報がなくて困った。

というわけで、そこらへんも踏まえて、メモしておきたいと思います。サンプルもこれから bitbucket にでもアップしておこうと思います。
前置きが長くなりましたが、簡単な掲示板アプリを紹介してみます。っていうか、lighttpd 環境の人は参考になるかもしれないというレベルの話。

テスト環境

CentOS 5.x系最新
Perl 5.8.8
Catalyst 5.90060
lighttpd-fastcgi-1.4.32-1.el5
lighttpd-1.4.32-1.el5

MVC事始め

アプリケーション作成

DBテーブル作成

いらんサンプルデータ付きw

モデル作成
書式:

実行例:

※なんでだか、s が消えるっ。このサンプルは、trends_and_wom というテーブル名なんだけど TrendAndWom.pm になる。きもwww
 ちなみに tablename なら Tablename.pm, table_name なら TableName.pm になる。まぁ気にせずいこう。。

コントローラ作成

メソッドを実装

サブルーチンを追加します。
Attr.pm を開いて、sub index{} の下に以下をペーストして保存しといてください。

ビューの実装

・ビュー作成します

・テンプレート保存フォルダを作っておきます
[[email protected] Neoflow-Bbs]# mkdir -p root/ctrl/attr

・.tt テンプレートを作ります
※各 .tt は ↑で作成したディレクトリ配下に作成します。

bbs_all.tt

bbs_create.tt

bbs_edit.tt

bbs_error.tt

bbs_show.tt

ローカルサーバでテスト

(省略)

lighttpd 1.4.32 について

書いたら簡単なんだが、宮川さんのPlack::Middleware::LighttpdScriptNameFix のありがた~いコメントを見て(´;ω;`)っとなったことを告白しておきます。

引用:
This middleware fixes wrong SCRIPT_NAME and PATH_INFO set by lighttpd when you mount your app under the root path (“/”). If you use lighttpd 1.4.23 or later you can instead enable fix-root-scriptname flag inside fastcgi.server instead of using this middleware.

#宮川さんといえば、Plagger を未だに愛してやまない私ですが、ネット検索しても2008年とかその辺で時が止まっていて、plagger.orgドメインもなんか・・・な感じのサイトになってるし。
#みんなどうしているんだろうか。Yahoo Pipes とかも触ってみたけどなんかわくわく感がないし。Ypacとか申し込んだけど仕事でいけなかったしくっそ。おれPla++

脱線しましたが、コンフィグサンプルは以下です。動いているものを晒します。
要点は、fastcgi.server の設定で fix-root-scriptname を指定し、且つ “/” を指定しているところです。

うっは、まとまってねーー。

スポンサーリンク