CGI::Application::HTTPを覗いてみた

CGIAppベースのApplicationをStandAloneで動かすCGI::Application::HTTP

Catalyst::Engine::HTTPからの派生物。ネタ的にはおもしろいと思うんですが、CGI::Appの特性を考えると、そのままでは使えないかな、と。

Catalystの場合、内部でエンジンの切り替えルーチンを持っている(コードをいじらずとも環境変数で切り替えられる)から問題ないわけですが、現状の CGI::App::HTTP の場合、アプリケーション本体の中身を書き換えないといけない。もちろんスクリプトの実行前にフィルタかけてほげほげという手もなくはないんでしょうが、それよりは、たとえばもともとのスクリプト

  # In "WebApp.pm"...
  package WebApp;
  use base qw(CGI::Application);
  sub setup {
    ...
  }
  1;

  # In "webapp.pl"...
  use WebApp;
  my $webapp = WebApp->new;
  $webapp->run;

こんな感じだとしたら、WebApp.pm の use base qw(CGI::Application) をいちいち use base qw(CGI::Application::HTTP) に書き換えさせるよりは、webapp.plのなか、たとえば use WebApp; のあとに use CGI::App::HTTP; したら(パッケージ切り替えるとかして) CGI::App の中身をオーバーライドするようなつくりにした方が使い勝手がいい――たとえばテストを組むときにモジュールの中身をいじらずに済む――んじゃないかしら。

PODも、たぶんいまのままだと意図がうまく伝わらないんじゃないかなあ――もっとテスト用というのを前面に出して、LWP::UserAgentとかWWW::Mechとかでアクセスするところまで書いた方がわかりやすいんでないかなあ――と思うのですが、いい加減頭が回ってないのでとりあえずこの辺で。