¶ グローバルメニュー
¶ 短信タイトル

CatalystでEVAL_PERL

¶ 短信空間内の前後移動ナビゲーション

Clip
¶ 短信本文
2005-09-28 13:32
添付ドキュメントの構成が分かりにくくて、TT(Template Toolkit)の禁断の呪文「EVAL_PERL => 1」(笑)をどこでセットしていいのか、よく分からなかったんですが、アプリケーションパッケージ(lib/Hoge.pm)のHoge->config()内に置くのかなと思って、いくつかのパターンを試してみたけど、ダメ。例によってググール博士で日本語以外のページを検索してみたら、CatalystでTTのデフォルトを設定するには、いくつかパターンがあるらしい。
2005-09-28 13:40
「lib/Hoge/V/TT.pm」内でEVAL_PERLをセットするとOKだったんだが、これはアプリ側で設定したいよなぁ。
 package Hoge::V::TT;

 use strict;
 use base 'Catalyst::View::TT';

 Hoge::V::TT->config(
   {
     EVAL_PERL => 1,
   }
 );
2005-09-28 13:58
アプリ側でのセットはそのうち究明するとして、とりあえず、これでとっかかりはできたぞ。ビュー側にPerlエリア作っておいて、「print Dumper $stash」とかやると、面白いわけですよね。
2005-09-28 16:43
とりあえずのまとめ。インストールはすべて終了していると想定し、最初のスケルトン作成から、テストページの表示チェックまで。ActviePerlは5.8を使うが、5.6も共存している。5.6は「d:/usr/local」に、5.8は「d:/usr/share」にそれぞれインストールしてあり、環境変数PATHでの出現順序は常用している5.6が最初となっている。コマンドラインでの作業は、コマンドプロンプトではなくCygwin上のBashプロンプトで行っている。
 ●スクリプトの修正
 # D:\usr\share\bin\catalyst.pl
 =>ReadOnlyを外してから修正

   #!C:\Perl\bin\perl.exe -w
    ↓
   #!d:\usr\share\bin\perl.exe -w

 ●ディレクトリ作成
 |>> d:/usr/share/bin/catalist.pl Hoge
 =>PATHの順序の関係から絶対指定でcatalist.plを起動

 ●ビュー準備
 |>> cd Hoge
 |Hoge>> d:/usr/share/bin/perl ./script/hoge_create.pl view TT TT
 =>PATHの順序の関係から絶対指定でperl.exeを起動(以下同じ)

 ●Hoge.pmを修正する
 # Hoge/lib/Hoge.pm
 sub default : Private {
   my( $self, $c ) = @_;
     $c->res->output(
       q{<a href="page2/">次のページ</a>},
   );
 }

 # page2を用意する
 sub page2 : Global {
   my( $self, $c ) = @_;
 
   $c->stash->{text}      = q{Page2};
   $c->stash->{template}  = q{page2.tmpl};
   $c->forward( q{Hoge::V::TT} );
 }

 ●EVAL_PERLのセット
 # Hoge/lib/Hoge/V/TT.pm
 Hoge::V::TT->config(
   {
     EVAL_PERL => 1,
     # キャッシュの準備
     DELIMITER => q{;},
     COMPILE_EXT => q{.ttc},
     COMPILE_DIR => q{./}, # -> Hoge/D/
   },
 );

 ●テンプレートの用意
 # Hoge/root/page2.tmpl
 <h1>[% text %]</h1>

 [% PERL %]
 my $text = $stash->{text} || q{};

 for my $i( 0..10 ) {
   print qq{<p>$text</p>};
 }
 [% END %]

=>どうせキャッシュ化されたら一緒だと思うから慣れ親しんだPerlで書いてる(笑)

 ●デバッグサーバ起動
 |Hoge>> d:/usr/share/bin/perl ./script/hellocatalyst_server.pl
 =>デバッグ用のサーバは「Ctrl + C」で中断できる

 ●ブラウザでアクセス
 =>「http://localhost:3000/」にアクセス
 =>最初のページから「page2」に移動し、テキストが表示されればOK
2005-09-28 16:57
あと気になるのはmod_perl上での挙動だすね。カレントディレクトリの問題はCatalystが面倒見てくれるのかどうか。あと、Class::DBIの問題。MVCのMはClass::DBI、VはTT(Template Toolkit)が担当しているみたいだが(なんかClass::DBIの開発元がゴタゴタしているみたいだしなぁ…)、確かClass::DBIの場合は「1テーブル=1クラス」ということだったと思うが、このクラスの作成は自動化されているのかどうか? 自動化されてたら、それはそれで美味しいかなと。しかし、最大の懸案はCatalystとClass::DBIは、確かPerlの5.8でしか動かないと記憶してるんだが、このあたりだよね。せめて5.6で動いてくれるんならば(関連モジュールは自前でコピー処理するとして)、たいがいのレンタルサーバで動くんだろうけどなぁ……。まぁ、Webアプリが必要になるのはLAN内での作業でだろうけどね。
2005-09-28 23:27
ActivePerlの場合は、やはりClass::DBI回りが相当なネックになってるっぽいね。Catalyst::Model::CDBIだの、足りないモジュールをいろいろ入れて「create model CDBI ...」やってみたら、最初のCDBI.pmだけは自動生成されるが、後はダメでした。DBD::PGが腐っているような気もするし、「8.0.3は数字じゃない」ってエラー、初めてみたよ。そこの部分ツブしてみたけど、Class::DBI::Loader::GenericやClass::DBI::Pgでもエラー吐くから、これは試すだけムダかなぁ〜。かといって、MySQLやSQLiteとかじゃなぁ……(笑)。いまだにActivePerlのPPMにはDBD::Pgすら存在しないからなぁ、なんかActiveStateとPostgreSQLってケンカでもしてるのか? 肝心のMの部分がワヤでは、フレームワークっても片手落ちですな。Windows版PostgreSQL入れている人たちが、一番必要としているのがフレームワークのようなものだと思うんだけどもね。それともあれかな、Class::DBIを全部削除してからCatalyst入れると、きれいにインストールできたりするのかな? いずれにしろ、ActivePerlでは、まだまだ先の話みたいだなぁ、ちと残念。(;´Д⊂)

Clip


これは、Catalystの開発者MLなのかな?
「どんな状況でも、ただ、”置けば動く”フレームワークが欲しいです」……ということで、簡易フレームワーク(?)の自作を試みているようです
で、その試作品が、こちら
領海侵犯とかヤバいこと盛んにやらかしている国の言うべき言葉ではない罠。まぁ、持論なんだが、特定アジアとくに砂漠帝国が模範としているのは、ども昔の大日本帝国そのものなんじゃないのかなーという気がしてんですけどね。大日本帝国というコンセプトを、日本を一切抜きで実現しようとしてるのかなぁと(笑)。朝鮮半島で宗主国にいいように扱われていた子どもたちを見て悪漢どもを追い散らしてくれて、「ほれ、まずは鼻かめよ!」と初めて優しく接してくれた隣のお兄ちゃんに、永遠の憧憬・恋愛感情を抱かざるを得なかったのと同じ回路を、もしかしたら砂漠帝国の中の人も抱えてんのかもしれないんだよなぁ……。こっちの場合は西欧に好き放題にやられっぱなしだったわけだし(いまもかな?)、あの時代に互角に真正面から渡り合おうとしていた国の潔さと独自に打ち出した不易流行なコンセプトにカッコよさというか憧憬を抱いてしまうのは仕方ないのかもしれない。彼らが見ていたい日本ってのは、当時の「大日本帝国」の幻影でしかなくて、だからこそ、60年も前のこと、いつまでもほじくり返しているのかもな。彼らは決して互角に渡り合ってきたわけじゃなくて、国民党を大陸から追い出して中原を乗っ取ったり、台湾を国連から追い出して常任理事という地位を乗っ取ったり、ようするに詐欺まがいなことでしか渡り合えてないわけでね。その果てが、いわば、「大東亜共栄圏の僭主化・乗っ取り」ですよ(爆)。その証拠というわけでもないが、資本主義政策ったって、誰もが欲しがる魅力あふれる彼ら独自の商品を自力で開発できてない……真正面に資本主義に向かっていない……わけで、結局のところ、中国四千年の歴史はとっくに断絶していて、短く、かつ、暗黒な歴史しかもっていない図体大きいだけで、砂漠に征服されようとしている国ってわけだから、そうだなぁ、やっぱ天皇制というか"世界に冠たる皇室"と「海を制御する力」は、欲しくて欲しくてたまらないってことだろうな(笑)。例えば、いまどき、「オリンピックと新幹線」の同時実現という田舎くさいことしか考えられなくて、オリンピックはともかく、肝心の新幹線を独自開発できなければ、このペアで戦後に日本が演じてみせた「奇跡」をなぞることすらもできないってことを、決定的に理解してないんだよな。ましてや亡霊のような大東亜共栄圏を僭主しようなんてのは、100年は早い。真正面から独自に勝負の逆を走っている……詐称的なパクリ資本主義政策やらかしてる南朝鮮が全世界からどーゆーふーに見られているか、知らないわけでもないんだろうけどなぁ……。「画竜点睛を欠く」ってのは、砂漠帝国の故事じゃなかったのか? 無理しないで「特定アジア共栄圏」(大特亜共栄圏)でも構築して、砂やニンニクあたりと格闘していてほしいと思う。ふるさとは海ではなくて砂漠だろ?