« 霧しなそば | メイン | 豚肉とトマトのピリ辛炒め »

2005年07月07日

[技術] Catalyst環境再構築

【手順の覚書】

■プロジェクト名XGでCatalyst開発環境作成

[y-ishiha@tama catalyst]$ catalyst.pl XG
created "XG"
created "XG/script"
created "XG/lib"
created "XG/root"
created "XG/t"
created "XG/t/m"
created "XG/t/v"
created "XG/t/c"
created "XG/lib/XG"
created "XG/lib/XG/M"
created "XG/lib/XG/V"
created "XG/lib/XG/C"
created "XG/lib/XG.pm"
created "XG/Build.PL"
created "XG/Makefile.PL"
created "XG/README"
created "XG/Changes"
created "XG/t/01app.t"
created "XG/t/02pod.t"
created "XG/t/03podcoverage.t"
created "XG/script/xg_cgi.pl"
created "XG/script/xg_fastcgi.pl"
created "XG/script/xg_server.pl"
created "XG/script/xg_test.pl"
created "XG/script/xg_create.pl"

■ViewをTemplate-Toolkitベースで作成
[y-ishiha@tama catalyst]$ cd XG
[y-ishiha@tama XG]$ script/xg_create.pl view TT TT
created "/home/y-ishiha/public_html/catalyst/XG/script/../lib/XG/V/TT.pm"
created "/home/y-ishiha/public_html/catalyst/XG/script/../t/v/tt.t"

■データベースの作成とテーブル定義
[y-ishiha@tama script]$ createdb -E utf-8 xg
CREATE DATABASE
[y-ishiha@tama XG]$ psql -e xg < script/posgres.sql
BEGIN TRANSACTION;
BEGIN
CREATE TABLE users (
username varchar(100) PRIMARY KEY NOT NULL,
password varchar(100) NOT NULL,
nickname varchar(100),
name1 varchar(100),
name2 varchar(100),
name3 varchar(100),
sex varchar(6) CHECK(sex='male' OR sex='female'),
email varchar(100),
zip varchar(100),
country varchar(100),
prefecture varchar(100),
city varchar(100),
address1 varchar(100),
address2 varchar(100),
address3 varchar(100),
tel varchar(100),
fax varchar(100),
question varchar(100),
answer varchar(100),
active boolean DEFAULT 'false',
activedate timestamp,
closedate timestamp,
modifydate timestamp,
registdate timestamp DEFAULT now()
);
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "users_pkey" for table "users"
CREATE TABLE
CREATE TABLE guidedata (
id serial PRIMARY KEY NOT NULL,
title varchar(100) NOT NULL,
area varchar(100) NOT NULL,
category varchar(100) NOT NULL,
body text,
public boolean DEFAULT 'false',
modifydate timestamp,
registdate timestamp DEFAULT now()
);
NOTICE: CREATE TABLE will create implicit sequence "guidedata_id_seq" for "serial" column "guidedata.id"
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "guidedata_pkey" for table "guidedata"
CREATE TABLE
CREATE TABLE articles (
id serial PRIMARY KEY NOT NULL,
basename varchar(100) NOT NULL,
username varchar(100) NOT NULL,
title varchar(100) NOT NULL,
area varchar(100) NOT NULL,
category varchar(100),
body text,
public boolean DEFAULT 'false',
modifydate timestamp,
registdate timestamp DEFAULT now()
);
NOTICE: CREATE TABLE will create implicit sequence "articles_id_seq" for "serial" column "articles.id"
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "articles_pkey" for table "articles"
CREATE TABLE
COMMIT;
COMMIT

■ModelをClass::DBIをベースにして作成
[y-ishiha@tama XG]$ script/xg_create.pl model Pg CDBI dbi:Pg:dbname=xg y-ishiha
created "/home/y-ishiha/public_html/catalyst/XG/script/../lib/XG/M/Pg.pm"
exists "/home/y-ishiha/public_html/catalyst/XG/script/../lib/XG/M/Pg"
created "/home/y-ishiha/public_html/catalyst/XG/script/../lib/XG/M/Pg/Articles.pm"
created "/home/y-ishiha/public_html/catalyst/XG/script/../lib/XG/M/Pg/Guidedata.pm"
created "/home/y-ishiha/public_html/catalyst/XG/script/../lib/XG/M/Pg/Users.pm"
created "/home/y-ishiha/public_html/catalyst/XG/script/../t/m/pg_articles.t"
created "/home/y-ishiha/public_html/catalyst/XG/script/../t/m/pg_guidedata.t"
created "/home/y-ishiha/public_html/catalyst/XG/script/../t/m/pg_users.t"

■Controllを作成
[y-ishiha@tama XG]$ script/xg_create.pl controller Login
created "/home/y-ishiha/public_html/catalyst/XG/script/../lib/XG/C/Login.pm"
created "/home/y-ishiha/public_html/catalyst/XG/script/../t/c/login.t"
[y-ishiha@tama XG]$ script/xg_create.pl controller Regist
created "/home/y-ishiha/public_html/catalyst/XG/script/../lib/XG/C/Regist.pm"
created "/home/y-ishiha/public_html/catalyst/XG/script/../t/c/regist.t"
[y-ishiha@tama XG]$ script/xg_create.pl controller User
created "/home/y-ishiha/public_html/catalyst/XG/script/../lib/XG/C/User.pm"
created "/home/y-ishiha/public_html/catalyst/XG/script/../t/c/user.t"
[y-ishiha@tama XG]$ script/xg_create.pl controller Admin
created "/home/y-ishiha/public_html/catalyst/XG/script/../lib/XG/C/Admin.pm"
created "/home/y-ishiha/public_html/catalyst/XG/script/../t/c/admin.t"
[y-ishiha@tama XG]$

■ユーザ認証にPluginのAuthenticate::CDBIを使うための作業
Authenticate::CDBIはまだCPANに登録されていないようなので、http://dev.catalyst.perl.org/browser/trunkより CDBI.pmファイルを取得して、/usr/lib/perl5/site_perl/5.8.5/Catalyst/Plugin/Authenticateにコピーする。

XG/lib/XG.pmのPlugin指定をuse Catalyst qw/-Debug Session::FastMmap Authenticate::CDBI/;にする。(Session::FastMmapを一緒に追加)

同じくXG.pmのconfigのsessionを以下のようにする。

session => {
expires => 60 * 60 * 24,
rewrites => 0,
storage => '/tmp/session'
},
authenticate => {
cdbi => {
class => 'XG::M::Pg::Users',
username => 'username',
password => 'password'
},
}
}

Class::DBIのAutoCommitを有効にするためにXG/lib/M/Pg.pmのconfigのoptionsに{AutoCommit=>1}を追加する。

投稿者 nekobara : 2005年07月07日 15:12


トラックバック

このエントリーのトラックバックURL:
http://www.ishihara.ne.jp/mt/mt-tb.cgi/389

コメント