あたらしものずきっ!

試してみたものとか、遊んでみたものを色々記してみます。

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

escape_html

escape_html($value)
htmlを指定すると、エスケープしたスカラー値が返ってくる。

unescape_html

unescape_html($value)
エスケープ済みhtmlを指定すると、元に戻したスカラー値が返ってくる。

redirect

redirect($url)
指定したURLに転送する。

current_url

current_url
パス、およびクエリを含めたURLを返す。

is_post_request

is_post_request
POSTリクエストかどうかを確認する。

uri_for

uri_for($path, @query);
pathとquery($key => $val)の値を組み合わせたURLに転送する。

static_file_path

static_file_path
スタティックなパス(menta/static)を返す

cache_get_callback

cache_get_callback($key, $code)
$keyで保存されたキャッシュがあればそれを返し、なければ$codeの実行した結果を$keyにてキャッシュしてから返す。