Mojolicious

1/2ページ

Mojolicious純正のフォームバリデーション & フィルター

Mojolicious::Validator::Validation - Perform validations - metacpan.org Mojolicious純正のフォームバリデーションを使う上で気を付ける点を書き留めておく。Mojolicious::Plugin::TagHelpersとも相性良いし(当たり前)、活用すべき。 my $validation = $c->validation; $validation->required('name')->like(qr/hoge/); $validation->optional('name2', 'trim')- […]

Mojoliciousでactionの前後に実行される独自のHookを作る。before_action、after_action編

PerlのWebApplicationFrameworkであるMojoliciousでは様々なフックが用意されているのだけれど、actionの前後だけに実行したい場合は独自にフックポイントを追加しないといけない。 実装方法その1 一番単純な実装方法はaround_actionフックを使うのが良さそう。actionは$lastフラグが真の時に実行されるので前後に独自のフックをエミットする。 sub startup { my $self = shift; ... $self->hook( around_action => sub { my ( $next, $c, $action, $ […]

AtomエディターのemmetをMojoliciousのテンプレートで使う

language-mojoliciousを導入する。 keymap.csonに以下を追記 'atom-text-editor[data-grammar="text html mojolicious"]:not([mini])': 'tab': 'emmet:expand-abbreviation-with-tab' タブで展開させるとlanguage-mojoliciousとカブるので emmetはcmd+shift+eにしてみる。 'atom-text-editor[data-grammar="text html mojolicious"]:not([mini])': 'cmd-shift- […]

Mojolicious、Mojolicious::Liteアプリをマウントする方法

プラグインとしては Mojolicious::Plugin::Mount  がある。短いコードなの読むと参考になる。 Mojoliciouアプリを埋め込む 追記:Mojolicious::Commandsを使う方法があるらしい。こっちの方が正統? $app->routes->any( '/sub' )->detour( app => Mojolicious::Commands->start_app('SubApp') ); Mojolicious::Liteのアプリをマウントする方法は日本語だと Mojolicious::Guides::Routing に書いてあ […]

Minillaを使ってMojoliciousプラグインを開発する

1. Mojoliciousプラグインの雛形作成 $ mojo generate plugin MyPlugin カレントディレクトリに Mojolicious-Plugin-MyPlugin というディレクトリ名で雛形作成される。 2. ドキュメントにAuthor情報を追記する。 $ cd ./Mojolicious-Plugin-MyPlugin $ vi lib/MyPlugin.pm minillaではPODに書かれているAuthorが使われる。作成された雛形(MyPlugin.pm)のPODにはAuthorの項目がないので追記する。 vi lib/Mojolicious/Plugin […]

mojoliciousをNginxの後ろで動かす時にHTTPSを検知するには

MojoliciousでHTTP(S)の振り分けをリバースプロキシのバックエンドでも出来るようにしてみる が、さいきんのバーションでは変更があったらしくmojoliciousをばーじょんあっぷしたらうごかない。 こちらのGistが参考になる。 「MojoliciousでHTTP(S)の振り分けをリバースプロキシのバックエンドでも出来るようにしてみる」の例(Apache + mod_proxy) 抜粋すると、 proxy_set_header X-Forwarded-HTTPS ではなく、 proxy_set_header X-Forwarded-Proto $scheme; がひつよう(になっ […]

[Perl] MojoliciousでHTTP(S)の振り分けをリバースプロキシのバックエンドでも出来るようにしてみる

追記(解決編) @clicktx 各routeの判別でリクエストのスキームではなくX-Forwarded-HTTPSを見て判別するように変更してもダメですかね?Apache+mod_proxyの例ですが、これとは意図がちがうのかな? https://t.co/VMvpP3vd1C — Hayato Imai (@hayajo) November 12, 2013 という事で、検証して頂きまして、うまくいかない原因が判明しました。以下のgistが最高に参考になります。@hayajo++ 素晴らしいgist 以下原文 SSL専用のページとどちらでもいいページとSSLでアクセスして欲しく […]

[perl][mojolicious][メモ] Mojoliciousのバージョンあげたら動かなくなった。

Mojoliciousのバージョンあげたら動かなくなった。 Mojolicious::Commandsの start メソッドが無くなった $ENV{MOJO_APP} ||= 'MyApp'; Mojolicious::Commands->start; エラーになる Couldn't load application from file "./myapp": Can't locate object method "start" via package "Mojolicious::Commands" at ./myapp line 34. 現在は Mojolicious::Command […]

mojoliciousでSSLページヘリダイレクトさせると無限ループしてしまう問題

問題点 この問題は Mojoliciousでhttps(SSL)専用ページとhttp専用ページの振り分けをroutesのbridgeを使って行うを実装した時に起こる問題です。 件のエントリーの実装でもスタンドアロンのサーバで公開する場合には問題にならないのですが、Nginx等のリバースプロクシの後ろにアプリケーションサーバを置いて運用する場合に問題が起きます。 通常、webサーバであるNginxとクライアントの間ではSSL通信を行い、バックエンドのアプリケーションサーバ(Starman等)とNginxの間では通常のhttpで通信すると思います。 SSL通信 クライアント --- Nginx | […]

Mojoliciousでhttps(SSL)専用ページとhttp専用ページの振り分けをroutesのbridgeを使って行う

このエントリーには問題点があります(2013/5/5追記) webアプリを作る上でセキュアな通信を強要するページとそうではないページを振り分けるにはどうすればいいのか悩んでいたのだけど、ルーターでリダイレクトさせる方法にしてみた。 全てのページをSSLでアクセスされても速度的にとか負荷的に困るので、ある決まったrouteのみSSLでアクセスして、メインのコンテンツは通常のhttp通信(非SSL)にredirectする仕様。 必ずhttpsでアクセスするルート /login /join 必ずhttpでアクセスするルート / /entry/1 /entry/2 /entry/.... httpでも […]