12 Things I dislike with CGI::Application

http://blog.nomadscafe.jp/archives/000557.html
より。

かぜぶろさんのに追加してみます。

4.使用プラグインが多いと、記述が面倒になる。
  例えば↓


use CGI::Application::Plugin::TT;
use CGI::Application::Plugin::LogDispatch;
use CGI::Application::Plugin::Session;
use CGI::Application::Plugin::Config::Simple;
use CGI::Application::Plugin::Forward;

こんな感じ。激しく(゚Д゚)ウゼェェェ

5.名前がダサいw
刺身☆ブーメランさんがcgiapp=非モテ?な件
で書かれていますが、ネーミングを考えたほうがいいと思う。
AjaxCatalystじゃないですけど、名前ってかなり重要だと思う。
じゃあ、俺がいいネーミングを付けられるかと言うとそれはムリポ
なのでMLの結果に期待。(他力本願ヽ(´ー`)ノマンセー)

とりあえずこんな感じで。
追加しても12にみたね〜w

と、愚痴ってても仕方ないので一つ提案。

4を改善してみました。
ソースは↓。


package CGI::Application::Advance;
use strict;
use warnings;
use base 'CGI::Application';
use UNIVERSAL::require '0.10';
our $VERSION = '0.01';
our @ISA;
sub import {
my ( $self, @options ) = @_;
my $caller = caller(0);
no strict 'refs';
push @{"$caller\::ISA"}, $self;
for my $option ( @options ){
my $plugin = "CGI::Application::Plugin::$option";
$plugin->use;
}
}
1;

Catalyst風にプラグインをどしどしインスコかませます。
使い方例は↓


package NekoAjax;
use strict;
use warnings;
use base qw(Class::ErrorHandler);
use CGI::Application::Advance qw/ TT DebugScreen /;
sub cgiapp_init {
my $self = shift;
}
sub cgiapp_prerun {
my $self = shift;
$self->header_props( -charset => 'UTF-8', -type => 'text/html');
}
sub do_error{
my $self = shift;
$self->tt_include_path("./template/");
return $self->tt_process('error.tt',{error_msg => "System Error"});
}
1;

どうでしょ?

でも、こんなのは大元であるCGI::Appに組み込んでほしいんですよね。
runメソッドの改善といい色々と直しどころ満載名CGI::Appですが、
CGI::App自体大きくないし、初心者にも理解しやすく使いやすいから
敷居も低いですし、もっと活発になってほしいですね。

刺身☆ブーメランさんも書いてらっしゃいますが、
日本人のコミュニティーがあってもいいかなぁと。
誰か旗揚げしませんw(他力本願ヽ(´ー`)ノマンセー)


(追記)

6.ヘルパースクリプトは必須でしょ!!欲しい!!
7.デフォルトでDispatch起動して欲しい。
  今更、一個一個起動CGI作ってられんし、非現実的。
8.Catalystみたいにテストサーバがあるといいなぁ。
9.Plugin::TTを使わなくてもTTをデフォで使えるようにして欲しい。
  HTML::Templateもサポートのままで。