Catalyst-Plugin-CRUD (2)
インストール方法
- 最初に DBDesginer4 をインストールします
- 次に Catalyst::Plugin::CRUD をインストールします
$ su - # cpan Catalyst::Plugin::CRUD
- DBDesginer4 でなにか適当なモデルを作ります
- プライマリーキー id を追加します
- オートインクリメントにしたほうがよいでしょう
- 削除用カラム disable を追加します
- モデルとテーブルのコメントに表示用の名前を入れます(これが重要)
- ファイル名はとりあえず tinyurl.xml にしておきます
- Catalyst アプリケーションの雛形を作ります
$ catalyst.pl TinyURL
- さっき作ったモデル定義ファイルをコピーします
$ cd TinyURL $ mkdir sql $ cp /somewhere/tinyurl.xml sql
DBIx::Class を使う場合
$ cd TinyURL/script $ ./tinyurl_create.pl model DBIC CRUD ../sql/tinyurl.xml
以下のようなファイルができます。
TinyURL/root/favicon.ico TinyURL/root/static/images/btn_88x31_powered.png TinyURL/root/static/images/btn_120x50_built_shadow.png TinyURL/root/static/images/btn_120x50_powered.png TinyURL/root/static/images/btn_88x31_powered_shadow.png TinyURL/root/static/images/btn_120x50_powered_shadow.png TinyURL/root/static/images/catalyst_logo.png TinyURL/root/static/images/btn_88x31_built.png TinyURL/root/static/images/btn_120x50_built.png TinyURL/root/static/images/btn_88x31_built_shadow.png TinyURL/root/template/tinyurl/list.tt TinyURL/root/template/tinyurl/list.cs TinyURL/root/template/tinyurl/read.tt TinyURL/root/template/tinyurl/create.cs TinyURL/root/template/tinyurl/create.tt TinyURL/root/template/tinyurl/update.tt TinyURL/root/template/tinyurl/update.cs TinyURL/root/template/tinyurl/read.cs TinyURL/root/template/header.cs TinyURL/root/template/header.tt TinyURL/root/template/footer.tt TinyURL/root/template/footer.cs TinyURL/script/tinyurl_fastcgi.pl TinyURL/script/tinyurl_create.pl TinyURL/script/tinyurl_test.pl TinyURL/script/tinyurl_server.pl TinyURL/script/tinyurl_cgi.pl TinyURL/tinyurl.yml TinyURL/t/01app.t TinyURL/t/02pod.t TinyURL/t/03podcoverage.t TinyURL/t/model_DBIC.t TinyURL/sql/schema/tiny_url.sql TinyURL/sql/tinyurl.xml TinyURL/Changes TinyURL/README TinyURL/Makefile.PL TinyURL/lib/TinyURL/I18N/en.po TinyURL/lib/TinyURL/I18N/ja.po TinyURL/lib/TinyURL/Controller/Root.pm TinyURL/lib/TinyURL/Controller/TinyUrl.pm TinyURL/lib/TinyURL.pm
- データベースを作ります
$ createdb tinyurl
- 自動作成されたスキーマを流し込みます
$ cd TinyURL/script $ psql tinyurl < ../sql/tiny_url.sql
- 次のようにしてモデルを作ります
$ cd TinyURL/script $ ./tinyurl_create.pl model DBIC DBIC::Schema TinyURL::Schema \ create=dynamic "dbi:Pg:dbname=tinyurl;host=localhost;" username password
- いったん起動してみます
$ cd TinyURL/script $ ./tinyurl_server.pl
- こんなメッセージが出れば成功です
[debug] Debug messages enabled [debug] Loaded plugins: .----------------------------------------------------------------------------. | Catalyst::Plugin::ConfigLoader 0.14 | | Catalyst::Plugin::Static::Simple 0.16 | '----------------------------------------------------------------------------' [debug] Loaded dispatcher "Catalyst::Dispatcher" [debug] Loaded engine "Catalyst::Engine::HTTP" [debug] Found home "/home/foobar/TinyURL" [debug] Loaded Config "/home/foobar/TinyURL/tinyurl.yml" [debug] Loaded components: .-----------------------------------------------------------------+----------. | Class | Type | +-----------------------------------------------------------------+----------+ | TinyURL::Controller::Root | instance | | TinyURL::Controller::TinyUrl | instance | | TinyURL::Model::DBIC | instance | | TinyURL::Model::DBIC::TinyUrl | class | '-----------------------------------------------------------------+----------' [debug] Loaded Private actions: .----------------------+--------------------------------------+--------------. | Private | Class | Method | +----------------------+--------------------------------------+--------------+ | /default | TinyURL::Controller::Root | default | | /end | TinyURL::Controller::Root | end | | /tinyurl/create | TinyURL::Controller::TinyUrl | create | | /tinyurl/default | TinyURL::Controller::TinyUrl | default | | /tinyurl/read | TinyURL::Controller::TinyUrl | read | | /tinyurl/delete | TinyURL::Controller::TinyUrl | delete | | /tinyurl/update | TinyURL::Controller::TinyUrl | update | | /tinyurl/list | TinyURL::Controller::TinyUrl | list | '----------------------+--------------------------------------+--------------' [debug] Loaded Path actions: .-------------------------------------+--------------------------------------. | Path | Private | +-------------------------------------+--------------------------------------+ | /tinyurl/create | /tinyurl/create | | /tinyurl/delete | /tinyurl/delete | | /tinyurl/list | /tinyurl/list | | /tinyurl/read | /tinyurl/read | | /tinyurl/update | /tinyurl/update | '-------------------------------------+--------------------------------------' [info] TinyURL powered by Catalyst 5.7007 You can connect to your server at http://localhost:3000
Class::DBI を使う場合
最初がちょっと違うだけで、DBIx::Class とほとんど同じです。
$ cd TinyURL/script $ ./tinyurl_create.pl model CDBI CRUD ../sql/tinyurl.xml
- 次のようにしてモデルを作ります
$ cd TinyURL/script $ ./tinyurl_create.pl model CDBI CDBI \ "dbi:Pg:dbname=tinyurl;host=localhost;" username password '{AutoCommit => 1}'
use Class::DBI::AbstractSearch;