Catalyst::Plugin::AutoCRUDを試してみた

Catalystcrud提供するモジュール何があるかなーと探してた。
http://dev.catalystframework.org/wiki/crud

このページのモジュール名から、お手軽に実装出来そうなCatalyst::Plugin::AutoCRUDを試してみた。

インストール

cpan Catalyst::Plugin::AutoCRUD

以上。
ただし、デモ環境を試したいのであればソースを取得しておくこと。

exampleを試す

ソース取得

wget http://search.cpan.org/CPAN/authors/id/O/OL/OLIVER/Catalyst-Plugin-AutoCRUD-0.68.tar.gz
tar zxvf Catalyst-Plugin-AutoCRUD-0.68.tar.gz 
cd Catalyst-Plugin-AutoCRUD-0.68

DB環境構築。
現存するDB環境を使いたい場合は、
この手順を無視してdemo.confのDB設定を変更するだけでもok。*1

cd examples/sql
perl bootstrap_sqlite.pl

デモサーバ起動。

cd ../demo/
perl server.pl


これだけで動くよ!



スクリーンショット

テーブル選択


テーブル詳細


行を選択した画面


バリデーションも対応済み

しかも編集中のスキーマだけでなく、
それに関連するスキーマもタブで選択できるようになっていてデータ入力しやすい!


extjsを使用していて、いきなりリッチなUIを持つCRUDアプリが出来てしまいます。





一から作りなおしてみる(ローカルのredmineデータベースをCRUD化する設定例)

アプリケーション雛形
catalyst.pl MyCrud::Web
cd MyCrud-Web/

# アプリケーション用にテンプレートを変えたい場合、AutoCRUDの雛形からコピーしておく
cp Catalyst-Plugin-AutoCRUDダウンロードフォルダ/lib/Catalyst/Plugin/AutoCRUD/templates ./root
cp Catalyst-Plugin-AutoCRUDダウンロードフォルダ/lib/Catalyst/Plugin/AutoCRUD/static ./root
プラグインに「AutoCRUD」追加

vi lib/MyCrud/Web.pm

use Catalyst qw/
    -Debug
    ConfigLoader
    Static::Simple
    AutoCRUD
/;
「アプリケーション用のテンプレートを使う設定」をコンフィグに記述

vi mycrud_web.conf

<Plugin::AutoCRUD>
    tt_path /path/to/MyCrud-Web/root/templates/full-fat
</Plugin::AutoCRUD>
スキーマクラス生成
script/mycrud_web_create.pl model DB DBIC::Schema MyCrud::Schema create=static 'dbi:mysql:redmine:localhost' user password
完成したのでアクセスしてみる

http://localhost:3000/autocrud/
おk。



問題点も

日本語が化ける

これクリティカルなんですが。いろいろと文字化け対応してみたのですが結局うまくいかなかった

ソースがよくわからず

AutoCRUDの方というより、extjsの使い方がわかってないのでわけわかめ
このモジュールをいじって自分用にカスタマイズとか難しいかな

でもまあ

手間をかけずリッチなCRUDが出来ちゃうので試してみる価値はあるかもです!
もっと細かい設定もできるのでドキュメント参照してみてください
http://search.cpan.org/dist/Catalyst-Plugin-AutoCRUD/lib/Catalyst/Plugin/AutoCRUD.pm#TIPS_AND_TRICKS

*1:DBIx::Class::Schema::Loaderで動的生成しているため