Mojolicious4.0からセッションを使うをていねいに
私のMojoliciousディレクトリ構成はこんな感じ
|-- hogehoge_web.conf
|-- hogehoge_web.psgi
|-- lib
| `-- HogeHoge
| |-- DB
| | `-- Schema.pm
| |-- DB.pm
| |-- Web
| | |-- Root.pm
| | `-- Route.pm
| `-- Web.pm
|-- log
| `-- development.log
|-- public
| |-- css
| | |-- bootstrap.min.css
| | `-- bootstrap-custom.css
| |-- img
| | |-- glyphicons-halflings.png
| | `-- glyphicons-halflings-white.png
| `-- js
| `-- bootstrap.min.js
|-- run
|-- script
| `-- hogehoge_web
|-- sql
| `-- create.sql
|-- t
| `-- basic.t
`-- templates
|-- layouts
| `-- bootstrap.html.ep
`-- root
`-- index.html.ep
つまり、開発機の起動はこんな感じで
morbo script/hogehoge_web
本番機はrunに実行権限を与え、runの中で、plackupを呼び出し、引数でpsgiファイルを指定しています。
開発機でMojoliciousのセッションを使う
まずは、shibayu36さんのMojoliciousでPlack::Middlewareを使う を参照して、起動用スクリプトをscript配下にrunと名前をつけて置いた。
$ENV{MOJO_APP} ||= 'Sample';
↓(ここを書き換えた)
#$ENV{MOJO_APP} ||= 'Sample';
enable 'CSRFBlock';
Mojolicious::Commands->start;
↓(ここを書き換えた)
#enable 'CSRFBlock';
Mojolicious::Commands->start_app('HogeHoge::Web');
CSRFBlockは、セキュリティ関連の設定だとおもうんですが、 おそらく、Mojoliciousで追加のモジュールをインストールしていないと ブロックされてしまうのではないかな。ここは、要勉強。とりあえず はずしておかないと、ブロックされてしまうので・・・
本番機でMojoliciousのセッションを使う
psgiファイルでの設定方法はゆーすけべーさんの方を参照 PerlのWAFはMojolicious推しな件とそのノウハウ hogehoge_web.psgiを編集して、
builerの中に以下を足してあげれば動くかな。
enable 'Session', store => 'File';
Mojoliciousの中のコード
コントローラの中で、ゆーすけべーさんのような感じでソースをかけば 、開発機も本番機も動くはず?
my $self = shift;
my $session = Plack::Session->new( $self->req->env );
my $access_token = $session->get('access_token');
my $access_secret = $session->get('access_secret');
モジュールのインストール方法
cpanm Plack::Builder
cpanm Plack::Middleware::Session cpanm Plack::Middleware::CSRFBlock
cygwinではTest::TCPのテストが通らなかった
cpanm Test::TCP --notest
開発機の起動方法
いつもmorbo使っていたので起動方法がわからなかった!これで起動できた。
plack script/run