Catalyst のファイルレイアウトを晒す
以前から Controller にロジックをガリガリ書いてて、いい加減分離とかテスト書けるようにリファクタリングしないとなと思っていたので、モダン Perl 入門を読んで、今までなんとなくモヤモヤ考えていたことが、かなりクリアになったのをきっかけに、ファイルレイアウトをごっそり変えてみました。
./lib ./MyApp ./Schema ./API ./CLI ./WUI ./View ./Controller ./Model ./API.pm ./DBIC.pm ./Base ./Controller ./Resources.pm ./Root.pm ./script ./t ./template ./p ./m ./conf ./sql ./structure ./data ./static ./image ./css ./js
Adaptor で読み込むモジュールは大体 Service という名前空間を使う流れになっているみたいですが、API の方がしっくりくるので、API にしました。ウェブ部分については、CLI もあるし、API、CLI とくれば、WUI (Web User Interfase) と 3 文字で統一されていた方が気持ちが良いので WUI に。
モダン Perl 入門には、Catalyst::Model::Adaptor を使う方法が紹介されていましたが、1対1 でラッパ書かなきゃいけないのも大変なので、Catalyst::Model::MultiAdaptor を採用しました。id:dann++
これからガリガリ MyApp/API にアプリケーションロジックを分離していきたいと思います。管理ツール用に CLI 以下にも色々入れたいですし。
Controller::Root にだけ、ディスパッチ以外のメソッドを生やすのが気持ち悪かったので、Base::Controller::Root にパラメーター変換や絵文字の変換など入れて、継承させて使ってますが、以前は Controller::Base という名前にしていましたが、Catalyst::Manual::ExtendingCatalyst に従って、Base::Controller:: に移動してみたものの、名前に困ってとりあえず Root にしてみましたが、他の人はどうしてるのでしょうか?