メメメモモ

プログラミング、筋トレ、ゲーム、etc

mojolicious

ルーティング設定に名前をつける

以下のようにルートに名前をつけることが出来ます。 # Mojolicious::Liteの場合 get '/hoge/detail/:id' => sub { ... } => 'hoge/detail'; # Mojoliciousの場合 $r->get('/hoge/detail/:id')->to('hoge#detail')->name('hoge/detail'); このようにしておく…

NotFound時の処理を書く

NotFoundページを表示するだけなら「$self->render_not_found」を使う。 表示以外の処理を書きたい場合は、after_dispatchフックを使う。 $self->hook(after_dispatch => sub { my $c = shift; if ($c->res->code eq '404') { # HogeHoge return $c->render_…

Test::MojoのUserAgentを変更する

Test::Mojoないで使われているMojo::UserAgentのnameを変更する。 $t->ua->name('Test UserAgent');

Mojo::Uploadのmove_toは必ずしもmvではない

Mojo::Uploadのmove_toの実態は、メンバ変数のassetのmove_toに委譲しています。 sub move_to { my $self = shift; $self->asset->move_to(@_); return $self; } このassetは「Mojo::Asset::Memory」か「Mojo::Asset::File」のインスタンスが入ります。 どち…

ドメインを取得する

$self->req->url->to_absを使う。 say $req->url->to_abs->userinfo; say $req->url->to_abs->host; say $req->url->to_abs->path; Mojo::Message::Request - HTTP request - metacpan.org

Test::Mojoでformの値を取得する

submitボタンを大体エミュレートしてpost_form_okに値を渡したい時に、以下のようにした。 $t->get_ok('/form'); my $res = $t->tx->res; my $first = $res->dom->find('form')->first; my %values; $first->find('input')->each( sub { my ($e) = @_; if ( …

Test::Mojoのpost_form_okで、チェックボックスの値を渡す方法

要するに、同じ名前のフィールドに複数の値を設定する場合は、以下のように配列リファレンスで渡す。 $t->post_form_ok('/', { chkbox => ['1', '2'] });

url_forでURLクエリを付ける場合

次のようなURLをurl_forを使用しているときに作成したい場合。 /entry/edit?id=1 以下のように書きます。 $self->url_for('entry/edit')->clone->query(id => 1)

同じロジックで、2つのルートに対応

次のふたつのURLで同じロジックを実行したい場合。 /entry /entry/20101111 このような場合、デフォルト値をundefに設定するようにします。 my $r = $self->routes; $r->route('/entry/:date')->to('Entry#page', { date => undef })->name('entry/page'); …

mod_proxy + Mojolicious(::Lite)を使ってデプロイする場合

Mojoliciousで書いたアプリをバックエンドで動作させ、apache+mod_proxyをフロントエンドに置いている場合の設定メモです。 Apache + mod_proxyの設定 今回は、下記のように、パスで振り分けるように設定している場合です。 ServerName somehost.com ProxyPa…