Catalyst

Catalyst in Windows

perlのバージョンは5.8.9 (strawberryPerl)

5.10系だとCatalyst::Develの動作に不安が残る

>perl -v

This is perl, v5.8.9 built for MSWin32-x86-multi-thread

Catalystのインストール

応答に自動でyesと返す。Catalystの確認は長いので、これを利用して放置したほうがよい

yes '' | perl -MCPAN -e 'install MODULE_NAME'
cpan

cpan>install Task::Catalyst
cpan>install Template
cpan>install Encode

cpan>install Catalyst
cpan>install Catalyst::Devel
cpan>install Catalyst::View::TT

cpan>install DBD::
cpan>install Catalyst::Model::DBIC
cpan>install Catalyst::Model::DBIC::Schema
cpan>install DBIx::Class::Schema::Loader
cpan>install  DateTime::Format::MySQL
( cpan -i DateTime::Format::MySQL )

ppm install DBD-mysql

Catalystプロジェクトの作成

Windowsの場合、catalyst.plでなく、バッチのcatalystをつかう

>catalyst Hello
>cd  Hello

Catalystサーバーの実行

>perl script\hello_server.pl

http://localhost:3000 にアクセスするとテストページがみられる

Catalystビューの作成

>perl script\hello_create.pl view TT TT

Catalystモデルの作成

>perl script\hello_create.pl model DBIC DBIC dbic:SQLite2:D:/work/Hello/db/memo.db

Catalystモデル スキーマの作成

>perl script\blog_create.pl model DBIC DBIC::Schema Blog::Schema
 create=static dbi:mysql:[database] [user] [password]
>perl script\blog_create.pl model DB DBIC::Schema create=static
 dbi:mysql:[database] [user] [password]

DBICでのモデル情報入手とテンプレートへの渡し方

Root.pm


    my $it = $c->model('DBIC::memo')->search({
        id => { '>' => 0 },
    },{
      rows => 2,
    });
    my $page = $c->request->params->{page} || 1;
    my $rs = $it->page($page);
    
    
    my @lines;
    while (my $cd = $rs->next){
      push (@lines, $cd->title);
    }
    $c->stash->{iterator} = $rs;
    $c->stash->{pager} = $rs->pager();
    $c->stash->{memos} = [$rs->all];

index.tt



<ul>
[% FOREACH num=[pager.first_page .. pager.last_page] %]
	[% IF num == pager.current_page %] <li><a href="?page=[%num%]">[[% num %]]</a></li>
	[% ELSE %]<li><a href="?page=[%num%]">[[% num %]]</a></li>
	[% END %]
[% END %]
</ul>

<ul>
[% FOREACH m = memos -%]
<li>
id : [% m.id %] <br />
title : [% m.title %] <br />
message : [% m.message %] <br />
</li>
[% END -%]
</ul>

package Blog::Schema::Result::Records;



__PACKAGE__->set_primary_key("id");
__PACKAGE__->belongs_to(user => "Blog::Schema::Result::Users",
 'user_id');
DateTime::Format::MySQL