はちゅにっき

こっちのブログはまったり更新

DBIC で static にスキーマを生成して利用する

前回は自動でロードするようにしたけれど、オーバヘッドうんぬんかんぬんなどなどの理由から、static にクラスを先に生成することにしました。

といっても

unknownplace.org - Schema-Loader 使い方
http://unknownplace.org/memo/2007/05/07#e001

のまんまで、Postgres のスキーマを利用するようにちょっと設定書いたりしただけです。

スキーマを作成する

#!/usr/bin/perl
use utf8;
use strict;
use warnings;

use FindBin;
use File::Spec;
use lib File::Spec->catfile( $FindBin::Bin, qw/.. schema / );
use DBIx::Class::Schema::Loader qw/ make_schema_at /;


make_schema_at(
    'MyApp::Schema',
    {   components     => ['ResultSetManager', 'UTF8Columns'],
        dump_directory => File::Spec->catfile( $FindBin::Bin, '..', 'lib' ),
        really_erase_my_files => 1,  # 昔のオプション名から新しいオプション名に
        debug => 1,
        db_schema => 'my_schema',  # ここかいた!
    },
    ['dbi:Pg:dbname=mydb', 'user', 'passwd'],
);

で、作成した script を実行するとスキーマがたくさん生成されます。

Catalyst からスキーマを読み込む

ヘルパースクリプトを実行しまーす。

$ ./script/myapp_create.pl model DBIC DBIC::Schema MyApp::Schema dbi:Pg:database=mydb user passwd

これで Catalyst から利用できるようになりました。
わーい。