この前のYAPCで当たり前のように話していたDancerという軽量フレームワークをうかつにも知らなかったのとdotCloudを使おうと思ったらサンプルがDancerだったのでちょっと調べてやってみました。
まずDancerとは
- Dancerは、超軽量Perlフレームワーク
- RubyのSinatraプロジェクトの移植として始まったが、独自路線で成長している
- Dancerアプリは、スタンドアロンWebサーバーとして、またはPSGIを使用する任意のWebサーバーから実行することができる
- DancerでのWebアプリケーション構築は、ライブラリのロードやルートハンドラーの定義と同じくらい簡単で、ルートハンドラーを定義し、様々なテンプレートエンジンでビューを描画できるようにし、静的ファイル提供をサポートし、セッションサポート、より多くの機能のためのエレガントな構文を提供
ふむふむこれは良さそうだ。
cpanm Dancer
でDancerをインストールしたら
dancer -a hoge
これでひな形完成。。簡単すぎる。。
後は
perl bin/app.pl
でサーバーが起動してhttp://localhost:3000を表示すると最初の画面が表示されます。
チョー簡単
とりあえず今回はTwitterクライアントを簡単に作ってみました。アプリ名はtwitterclとして作ってみます
まずルートにあるconfig.ymlにtwitterの設定を追記
plugins: Auth::Twitter: callback_url: http://localhost:3000/auth/twitter/callback consumer_key: XXXXXXXXXXXXXXXXXXX consumer_secret: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX callback_success: / callback_fail: /fail
テンプレートは標準でついてるんですが、やっぱり慣れているTTを使いたいのでconfig.ymlの
template: “simple”をコメントアウトしてtemplate: “template_toolkit”とenginesのコメントを外す
#template: template: engines: template_toolkit: encoding: 'utf8' start_tag: '[%' end_tag: '%]'
あとはソースはこんな感じでauth_twitter_init();を読み込み時の初期化処理として入れて、
OAuth処理はauth_twitter_authenticate_urlにリダイレクトさせてconfigのcallback_urlで設定した/auth/twitter/callbackに
戻してあげればsessionのtwitter_userにtwitterユーザ情報が入ってます。
あとはtwitterっていう名前をregistしてくれているのでtwitterで呼び出せば裏のNet::Twitterのインスタンスが使えます。
ヤバイ、ちょー簡単
lib/twittercl.pm
use Dancer ':syntax'; use Dancer::Plugin::Auth::Twitter; our $VERSION = '0.1'; auth_twitter_init(); get '/' => sub { if (not session('twitter_user')) { return redirect uri_for('/login'); } my $list = twitter->friends_timeline({count => 10}); template 'index', {list => $list}; }; get '/forward_twitter' => sub { redirect auth_twitter_authenticate_url; }; get '/login' => sub { template 'login'; }; post '/tweet' => sub { twitter->access_token(session('access_token')); twitter->access_token_secret(session('access_token_secret')); twitter->update(param('tweet')); redirect uri_for('/'); }; get '/fail' => sub { redirect uri_for('/login'); }; true;
あっという間ですね。
みなさんもLet’s Dance!!
コメント