2008年9月8日月曜日

 

【Perl】Catalyst実践【CPAN】

以下のリンクを参考にCatalystとSQLiteを使ったWeb上のメモ・アプリを作ります。
第4回 Catalyst(前編)---Perl向けWebアプリ・フレームワーク - ITpro

準備その1~Catalystインストール


perl -MCPAN -e 'install Task::Catalyst'

準備その2~SQLite2ライブラリのインストール


perl -MCPAN -e 'install DBD::SQLite2'
となっているが、上手くいかなかった。
ユーザー領域にCPANをインストールする方法 -
Net::SSLeayのインストール
この設定をしている場合にNet::SSLeayをインストールしようとすると、make時にOpenSSLライブラリをユーザー領域から探そうとするため失敗することがあります。その場合はmakepl_argの先頭に--を一時的に入れます。
ローカルにインストールしたからパスのせいかと参考にして次の様にした。

cpan> o conf makepl_arg "-- INSTALLDIRS=site LIB=$ENV{HOME}/local/lib/perl5 PREFIX=$ENV{HOME}/local"
cpan> install DBD::SQLite2
もしかしたら一つ目のコマンドはいらないかも。
動作確認。

% perl -MDBI -e 'DBI->connect(q{dbi:SQLite:dbname=/tmp/test.db})'

準備その3~SQLite3ライブラリのインストール

シェルから接続できるようSQLite3を入れる。
さくらサーバとSQLite - code雑記帳
% cd $HOME/src
// $HOME = "/home/ユーザ名"
% wget http://www.sqlite.org/sqlite-3.5.5.tar.gz
// SQLite3を取得(各自最新のものを入れてください)
% tar xzvf sqlite-3.5.5.tar.gz
// ディレクトリ展開
% cd sqlite-3.5.5
% ./configure --prefix=$HOME/usr --disable-dynamic
% make
sqlite3」で実行。停止するには「.quit」。
コマンドに関しては以下を参照か各自検索。
コマンドラインでSQLiteを操作する - Pumpkin Moonshine

ステップ1~スケルトン作成~

プロジェクトを作成するディレクトリに移動してコマンド実行。
ここではルート・ディレクトリ直下の「work/」。上手くいかなければやり直そう。(webルートの「www/」にした方が良いのか)
% mkdir work
% cd work
% catalyst.pl Memo
これで「Memo」ディレクトリと、その中にスケルトン(骨組み)が出来てMVCなどの基本的な構造が出来ます。
動作確認。
script¥memo_server.pl
テストサーバが起動するので「http://example.com:3000」にアクセス。Catalystのデフォルトページが表示されれば成功。さくらサーバだと「http://www.ユーザ名.ne.jp:3000」です。
プロジェクトにコントローラを作成して「http://example.com:3000/admin」のようにアクセスします。

ステップ2~データベース作成~

「Memo/db」とDB用ディレクトリを作成し、SQLiteをコマンドから作成。

% sqlite3 memo.db
  sqlite> CREATE TABLE memo (
     ...> id INTEGER PRIMARY KEY,
~~~~
     ...>);
sqlite>.q
もしくは「memo.sql」を作成し変換する。
memo.sql

CREATE TABLE memo(
 id INTEGER PRIMARY KEY,
・・・
);
sqlite3 memo.db < memo.sql
データがあればselect文で表示できます。
% sqlite3 memo.db
  sqlite> select * from memo;

ステップ3~MVC生成~

「work/」で以下のコマンドを実行すると「lib/Memo」内にMVCがそれぞれ生成されます。
script/memo_create.pl controller Memo
script/memo_create.pl model Memo DBIC::Schema dbi:SQLite:db/memo.db
script/memo_create.pl view TT TTSite
モデル作成が壁。
DBICをスーパークラス名にしてるのもあるけど上手くいかなかったのでDBIC::Schemaをインストールして使ってみた。
スキーマ情報は指定しない。意味が分からないので後回し。
「create=static」も指定すると上手くいかなかったので指定しない。
% script/sample_create.pl model DB DBIC::Schema Sample::Schema create=static dbi:SQLite:sample.db 
model  作成対象(model or view or controller)
DB  作成するクラス名(ちゃんと書くとSample::Model::DB)
DBIC::Schema  スーパークラス名(Catalyst::Model::DBIC::Schema)
Sample::Schema  スキーマ情報のクラス名
dbi:SQLite:dbname=sample.db  接続情報
ビュー作成は「view TT TT」と違いが分からないけど「view TT TTSite」の方がファイルをたくさん作ってました。
生成が成功してもテストサーバの起動時にエラーが出ることがあるが、ファイルが見つからなかったりパスが通ってなかったり、もしくは生成しなおした時に「Memo.pl」が存在すると「Memo.pl.new」が出来て古い方が邪魔になったりします。

cpan> install Catalyst::View::TT
cpan> install Catalyst::DBIC
続く。

めも



チュートリアルを読みながらCatalystサンプルアプリケーションを作ってみる - guri_2::perlメモ
PHP使いによるCatalyst初心者記事 - perl-mongers.org
さくらサーバとCatalyst - code雑記帳 catalystをさくらインターネットで使う - pepponの日記

setenv PATH /home/アカウント名/local/bin:$PATH
setenv PERL5LIB /home/アカウント名/local/lib/perl5
/home/アカウント名/.cpan/CPAN/MyConfig.pm

'make_install_arg' => q[SITEPREFIX=/home/アカウント/local],
'makepl_arg' => q[INSTALLDIRS=site LIB=/home/アカウント/local/lib/perl5 PREFIX=/home/アカウント/local],
'mbuildpl_arg' => q[./Build --install_base /home/アカウント/local],
'build_dir' => q[/home/アカウント名/.cpan/build],
MySQLのときモデル作成

script/MyApp_create.pl model DBIC DBIC::Schema MyApp::Schema create=static dbi:mysql:dbname=MySQLデータベース名:さくらのMYSQLサーバ名 MySQLアカウント MySQLパスワード
~/MyApp/script/myapp_cgi.pl

use lib '/home/アカウント名/local/lib/perl5', "$FindBin::Bin/../lib";

参考書

Catalyst: Accelerating Perl Web Application Development
Catalyst: Accelerating Perl Web Application Development

The Definitive Guide to Catalyst: Writing Extensible, Scalable and Maintainable Perl–Based Web Applications
The Definitive Guide to Catalyst: Writing Extensible, Scalable and Maintainable Perl–Based Web Applications

"Catalyst本"を一通り読了してみた - RemovableType

ラベル:


コメント: コメントを投稿

登録 コメントの投稿 [Atom]



この投稿へのリンク:

リンクを作成



<< ホーム

This page is powered by Blogger. Isn't yours?

登録 投稿 [Atom]

Google