- 2008年3月 4日 23:03
- 仕事のこと
Re:Re:Catalystアプリオレオレポリシー - よく帰れない人のブログ
久しぶりのえんとりー めがねのひとに触発されてオレオレポリシー。 Re:Catalystアプリオレオレポリシー 仕事も個人もCatalystなんで、特にポリシーは分けてない。 会社のみんなも俺のポリシーでやればいいのに。
よく帰れない人が触発されてRe:Re:Catalystアプリオレオレポリシーを書いてくれた。(久しぶりすぎてこのブログを忘れてた)
なので、ちょっとだけRe:Re:Re:Catalystアプリオレオレポリシー。
・MyApp::Pluginとかは作らない。 だってそのアプリでしか使わないならMyApp.pmに書けば良いじゃない。 もしMyApp.pmが長くなってきたらそのとき考える。 他のアプリでも使いそうだったら全部C::P::Hogeにする。 CPANにあげなくてもC::P::Hogeにする。 そういうのはrun_script.plの中でPERL5LIBに足してパス通す。
確かにその通り。
と思って Plugin に書いていた処理を MyApp.pm に実装し直そうと思ったけどダメだ。
だって、その Plugin の setup で NEXT してるんだもん。
MyApp.pm に同じように setup を実装して NEXT しても動かない。
だいたいこんな感じの実装。
package SayCheese::Plugin::NoImage;
use strict;
use warnings;
use base 'Class::Data::Inheritable';
use IO::File;
__PACKAGE__->mk_classdata('_medium');
sub setup {
my $c = shift;
my $config = $c->config;
my $mfh = IO::File->new( $config->{no_image}->{medium}, IO::File::O_RDONLY );
my $mdata;
while ( $mfh->sysread( my $mbuf, 8192 ) ) {
$mdata .= $mbuf;
}
__PACKAGE__->_medium( $mdata );
$c->NEXT::setup( @_ );
}
sub no_image { shift->_medium }
1;
MyApp.pm に setup() の内容を含めて no_image() として実装すれば動くのかな。
それだと、IO::File->new() が毎リクエスト動いちゃうので嫌だなぁと。
アプリ起動時に1回だけ処理されればいい内容なので明らかに setup() 内に実装する内容。
と言うことで、MyApp::Plugin はなくせませんでした。
・設定系は全部myapp.yml
本番、開発環境用の yaml はないってこと?
・myapp.ymlはリポジトリに入れず、myapp.yml.orgを入れる myapp.ymlは動いてる環境に合わせて。myapp.yml.orgはデフォルト 更新があったらスクリプト使ってマージ。
今度詳しく。
・テンプレートはDreamWeaverで編集 タグとか打ってらんねーよ!
DreamWeaver 買ってよ!
・ログは全部C::P::Log::Dispatch
C::P::Log::Dispatch ってどう?いい?
僕の場合ロガーは貧弱で C::P::Dumper くらいしか使ってない。
dbic_console.pl # MyApp::Schemas::MyAppを使ってDBICでほにゃる用のコンソール
これ気になる。
今度詳しく。
menu.yml # 外に出してないC::P::MenuMaker用の設定ファイル
BtoC だと Authetication はあっても Authorization はないって場合がほとんどだから MenuMaker らしきものを見たことがない。
C::P::MenuMaker いいなぁ。CPAN まだぁ?
- Newer: 3月9日の音楽のこと
- Older: Re:Catalystアプリオレオレポリシー
Comments:0
Trackbacks:0
- TrackBack URL for this entry
- http://hibinokoto.jp/mt/mt-tb.cgi/257
- Listed below are links to weblogs that reference
- Re:Re:Re:Catalystアプリオレオレポリシー from 日々のこと