めも添削
書こう書こうと思ってて忘れてた。
めも帖 - 「10 分で作る Sledge アプリケーション」のめも
を軽く添削してみるの巻。
というよりは、最低限必要となるスケルトンのクラスみたいなものです。
Sledge::Install::Stub に元があります。
- find は、ディレクトリ内の検索コマンド
ファイルとかディレクトリとかのリストを出してみただけです
たしか小文字で bookmark でした。セッション用テーブルだけではなく、実際にブックマークのテーブルも入れます。
/tmp/Sledge-1.11 というのは、あくまで Sledge のソースツリーがある場所なので、/tmp じゃないかも知れないです。
あと、sessions-pg.sql は、セッション用 DB が PostgreSQL の時用なので、今回は MySQL を使用した関係で実行はしてません。
set autolist してたりするので、補完候補の中で -pg.sql が出たのでわかりにくかったかも知れないです。
「?)」って書いてあるので一応説明すると「localhost から www というユーザ名で接続してきた場合は、'nipotan' というパスワードが必要で、bookmark というデータベース内の全てのテーブルに対して CRUD だけ許可しますよ」ということです。bookmark.*@ ←この @ は不要で。
- /bookmark/lib/Bookmark/Config にある_common.pmを設定する
- $c{TMPL_PATH} を設定
- $c{DATASOURCE} を設定(?)
細かいことを言えば %C ←大文字ですね。$C{DATASOURCE} は DBI で DB への接続をする時に必要なデータソース情報です。
- $c{COOKIE_NAME} を設定
- $c{COOKIE_PATH} を設定
- $c{COOKE_DOMAIN } を設定
- _common.pmをコピーして、_production.pmを作る
- MixIn.pmを作る。Exporterを継承
- ここでは、何かを雛形にして製作しているのではなく、1から書いている
- Exporterというのは、サブルーチンをインポートするpmらしい
- mkdir Page Data
- Bookmark::Data::Base; (Base.pm)をつくっています
- Bookmark::Data::Base は、Class::DBI を継承
- ?)__PACKAGE__ ってなんだっけ?(どこかで読んだんだけれど)
package 名の文字列を表すリテラルです。
package Foo;は
__PACKAGE__->bar;
package Foo;と同義。
Foo->bar;
- Bookmark::Data::Bookmark; (Bookmark.pm)をつくっています
- Bookmark::Data::Bookmark は、Bookmark::Data::Base を継承
- ?)ここらへんがよくわからないです。たぶん、Class::DBIを継承しているので、DBへの操作が書かれているっぽい
Class::DBI の perldoc を見られるといいですが、Bookmark::Data::Base には DB への接続情報を持ち、その接続情報を継承して、bookmark テーブルの操作関連が Bookmark::Data::Bookmark に書かれてたりします。
- cd ../Pages
- Bookmark::Pages::Root; (Root.pm)をつくっています
- Bookmark::Pages::Root は、Bookmark::Pages を継承
- ?)ここらへんがよくわからないです。たぶん、Controllerになるのかな?
そうですね。
- /bookmark/lib/view/ に、index.htmlを作成
- form タグにactionを書いていないけれど?いいのかな?
action ないと、current URI が action になります。
- TT2の形式で。
- nl2brというフィルタはなんだ? → 試していないけれど、テキスト中の改行を
に変換?
nl2br は、改行を <br> にしてます。
Bookmark::Pages::Root にあった、こんなようなやつです。
__PACKAGE__->register_hook(
BEFORE_DISPATCH => sub {
my $self = shift;
$self->tmpl->set_option(
FILTERS => {
nl2br => sub {
my $str = shift;
$str =~ s/(\r\n|[\r\n])/<br>$1/g;
$str;
},
},
);
},
);
- /bookmark/etc/ startup.plを作成
- ?)/bookmark/etc/ map.properties を作成
Sledge::Dispatcher::Properties 用の、URL と Class のマッピングリストです。
- ?)/bookmark/etc/ b.nipotan.org.conf を作成
Apache (mod_perl) から読み込ませる conf です。
Apache を restart する前に configtest で、startup.pl から use されるのにエラーとかがないか、あとは Include される conf にエラーとかがないかチェックします。
しないで restart して、エラーがあったりすると Apache が落ちてしまうので。。。
- ここからテスト開始
の前に /usr/local/apache/bin/apachectl restart して Include を有効にしてあげます。
というカンジです。