menta work ( 2010/01/23 )
PSGIとかに対応していってるMENTAを動かしてみる。
インストール
cd ~/Sites
git clone git://github.com/tokuhirom/menta.git
依存モジュールについては、MENTAのようなsubmoduleのあるgitリポジトリで全ソースを取得するを参照のこと。
ライブラリをextlibに突っ込みたい場合は
perl menta/bin/install-lib.pl
にてヘルプメッセージがでる。
アプリを作る
MENTAでアプリを作る場合は、menta/app/controller/ 以下にディレクトリを追加して、それ以下にindex.mtやら必要なファイルを追加する。
cd ~/Sites/menta/app/controller mkdir whosay touch whosay/index.mt
なお、MENTAトップページに表示されているアプリケーション一覧には、作成したアプリケーションの自動追加は行われない。http://0:5555/whosay/ あるいは http://127.0.0.1:5555/whosay/ にてアクセスすること。
実行する
cd ~/Sites/menta
perl bin/menta-server.pl
plファイルを書く
mtファイルについてはチュートリアルを見るのが早い。
plファイルについてはlib/MENTA.pm以下、いくつかソースコードを辿る必要がある。
以下、最低限覚えておいたほうが楽なものを備忘録的に。menta本体の更新で完全に変わったりする可能性があるため、過信は厳禁。
render_and_print
render_and_print("テンプレート", @差し込む値)
テンプレートは、controller以下のパスを相対で指定する。(ex: whosay/index.mt)
- index.pl
use MENTA::Controller; sub run { render_and_print("whosay/index.mt", ("name")); }
- index.mt
? my $name = shift; <?= $name ?>
name
redirect
redirect($url)
指定したURLに転送する。
current_url
current_url
パス、およびクエリを含めたURLを返す。
is_post_request
is_post_request
POSTリクエストかどうかを確認する。
static_file_path
static_file_path
スタティックなパス(menta/static)を返す
cache_get_callback
cache_get_callback($key, $code)
$keyで保存されたキャッシュがあればそれを返し、なければ$codeの実行した結果を$keyにてキャッシュしてから返す。