Hatena::Groupcatalyst

LAPISLAZULI HILL#Catalyst このページをアンテナに追加 RSSフィード

2006-11-09

[][][][]SchemaでCatalystでも34秒くらいでSchemaクラス生成 SchemaでCatalystでも34秒くらいでSchemaクラス生成 - LAPISLAZULI HILL#Catalyst を含むブックマーク はてなブックマーク - SchemaでCatalystでも34秒くらいでSchemaクラス生成 - LAPISLAZULI HILL#Catalyst SchemaでCatalystでも34秒くらいでSchemaクラス生成 - LAPISLAZULI HILL#Catalyst のブックマークコメント

Catalyst::Helper::Model::DBIC::Schema - search.cpan.org

DBIx::Class::Schema::Loader で 34 秒くらいで Schema クラス生成 - IT戦記という記事があったけどそれのCatalystのHelper版.なかでは同様にDBIx::Class::Schema::Loaderを使ってる

% ./script/myapp_create.pl model DBIC DBIC::Schema myapp::Schema create=static dbi:mysql:myapp root

create=static dbi:mysql:sandobox root
 exists "/Users/lapis/src/myapp/script/../lib/myapp/Model"
 exists "/Users/lapis/src/myapp/script/../t"
Dumping manual schema for myapp::Schema to directory /Users/lapis/src/myapp/script/../lib ...
Schema dump completed.
created "/Users/lapis/src/myapp/script/../lib/myapp/Model/DBIC.pm"
created "/Users/lapis/src/myapp/script/../t/model_DBIC.t"

lib/myapp/Model/DBIC.pm,t/model_DBIC.tとlib/myapp/Schema.pmに加えてlib/myapp/Schemaフォルダ内にSchemaファイルを自動生成してくれる

create=を指定するときは(もちろん)DBIx::Class::Schema::Loaderが必要.

またconnect_info argumentsを指定してやらないとエラーになる(Schema生成するんだから当然か).あとは実際の構成に合わせて修正してやればよい.Model/DBIC.pmのなかにサーバの設定が書き込まれるので必要に応じてmyApp.ymlに書き出すとかも

このコマンドを実行するだけでserver起動して下記のようにclassにアクセスできるようになる

[debug] Loaded components:
.-----------------------------------------------------------------+----------.
| Class                                                           | Type     |
+-----------------------------------------------------------------+----------+
| myapp::Controller::Root                                         | instance |
| myapp::Model::DBIC                                              | instance |
| myapp::Model::DBIC::Blog                                        | class    |
| myapp::Model::DBIC::BlogComment                                 | class    |
| myapp::Model::DBIC::Roles                                       | class    |
| myapp::Model::DBIC::UserRoles                                   | class    |
| myapp::Model::DBIC::Users                                       | class    |
'-----------------------------------------------------------------+----------'

ちなみにcreate=dynamicを指定すると,DBIx::Class::Schema::LoaderでSchemaが生成される.myApp::Schemaをあらかじめ生成する必要もない.最初はDBIx::Class::Schema::Loaderで作っておいて,あとで作り直せばよい.あとで作成するときはmyApp::Schemaが上書きされなかったので,消してからhelperを実行した

[参考]

The CPAN Search Site - search.cpan.org

2006/06/21 - memo - unknownplace.org

トラックバック - http://catalyst.g.hatena.ne.jp/lapis25/20061109

2006-11-01

トラックバック - http://catalyst.g.hatena.ne.jp/lapis25/20061101