Catalyst::Plugin::*の読み込み方(小ネタ)
普通に作るとプラグインの読み込み方は以下のようになります。
package MyApp; use Catalyst qw/-Debug ConfigLoader Static::Simple/; __PACKAGE__->setup;
でもこれだと条件によって読み込むプラグインを変えたい時は、その条件分岐をBEGINに突っ込んだりしなきゃいけなくなるので、以下のように書く方が良いです。
package MyApp; use Catalyst; __PACKAGE__->setup(qw/-Debug ConfigLoader Static::Simple/);
例えば、ちゃんとしたWebServerに静的コンテンツを配信させるからStatic::Simpleは不要だけど、テスト用にmyapp_server.plを使う場合はStatic::Simpleが欲しいなんて場合は
my @plugins = qw/-Debug ConfigLoader/; if ( ( $ENV{CATALYST_ENGINE} || q{} ) =~ m/^HTTP(?:::Restarter)?$/msx ) { push @plugins, 'Static::Simple'; } __PACKAGE__->setup(@plugins);
てな感じで書くわけです。
あと、-Debugをソース中に書いてしまうと常にデバッグモードになってしまうので、これを外して代わりに$ENV{CATALYST_DEBUG}や$ENV{MYAPP_DEBUG}を設定する方が良いです。(myapp_server.plの場合は-dオプションで)
それからプラグインは先頭から順番に読み込まれるのでConfigLoaderは最初に持ってこないといけません。
まとめると、こんな感じのMyApp.pmになります。
use Catalyst; my @plugins = qw( ConfigLoader ); push @plugins, qw( ... ); if ( ( $ENV{CATALYST_ENGINE} || q{} ) =~ m/HTTP(?:::Restarter)?/msx ) { push @plugins, 'Static::Simple'; } __PACKAGE__->setup(@plugins);