Sledge
Tomohiro IKEBE
株式会社ライブドア ネットサービス事業本部
Sledge とは
- Perl で書かれた Webアプリケーションフレームワーク
- Perl と同様のライセンスで利用可能
- 株式会社ライブドア(オン・ザ・エッヂ)の社内フレームワークを公開したもの (2003/2/13) (Simple|Smart) Libraries for Edge ?
- mod_perl環境、 CGI で動作する
- 商用サイトでの実績多数
Sledge で出来る事/特徴
- 定番 CPAN モジュールを利用
- テンプレートによる View の分離
- RDBMS, File 等を利用したセッション管理
- 認証が必要なページの定義
- フォームへの自動フィルイン
- 適切な文字コードのハンドリング
- 出力のフィルタリング
- フックによる機能拡張
変更可能なコンポーネント
- View(HTML::Template, Template-Toolkit)
- 認証ロジック
- セッション保存場所
- セッションID維持方法
- charset ハンドリング
- 設定ファイルパース
Sledgeによるアプリケーション開発の開始
- sledge-setup で雛形の作成
- セッション用データベースの設定
- コンフィグファイルの編集
- 雛形を継承して *.pm ファイルを記述
- .pm ファイルを起動する CGI スクリプトを記述
Hello World!(0)
package LLDN::Config::_common;
use strict;
use vars qw(%C);
*Config = \%C;
$C{TMPL_PATH} = '/path/to/project/view';
$C{DATASOURCE} = [ 'dbi:mysql:sledge','root', '' ];
$C{COOKIE_NAME} = 'sledge_sid';
$C{COOKIE_PATH} = '/';
$C{COOKIE_DOMAIN} = undef;
Hello World!(1)
package LLDN::Pages::Hello;
use strict;
use base qw(LLDN::Pages); # sledge-setup で生成されたクラスを継承
sub dispatch_index {
my $self = shift;
$self->tmpl->param(msg => 'Hello World!');
}
Hello World!(2)
<html>
<head>
<title>[% msg | html %]</title>
</head>
<body>
<h1>[% msg | html %]</h1>
</body>
</html>
Hello World!(3)
#!/usr/local/bin/perl
use strict;
use LLDN::Pages;
LLDN::Pages->new->dispatch('index');
Hookによる拡張(1)
- Hook 機能を使う事により、任意のフェーズに処理をはさむ事が可能
- 常に同じ値をテンプレートに渡す処理
- 出力後のロギング処理等
- Hook 設定可能な位置
- AFTER_INIT
- BEFORE_DISPATCH
- AFTER_DISPATCH
- AFTER_OUTPUT
Hookによる拡張(2)
package LLDN::Pages::Hook;
use strict;
use Sledge::Pages::Compat;
__PACKAGE__->register_hook(
BEFORE_DISPATCH => sub {
my $self = shift;
my $member = $self->session->param('login_member');
$self->tmpl->param(member => $member);
},
);
Sledge の今後
- Validation 機能の追加
- データベースまわりの機能
- もっと手軽に試せるように
- mod_perl2 対応
- むしろ Sledge2?