LoginSignup
10

More than 5 years have passed since last update.

Padrino アプリケーションに積まれた Rack Middleware を確認する

Posted at
$ padrino -v
Padrino v. 0.11.1
$ padrino g project my_project

明示的に use で積んだミドルウェアはMyProject::App.middleware
で確認できますが、デフォルトで積まれるミドルウェアはそこには表示されません。

そこで、確認用のRakeタスクを作成してみました。

stacked_middlewares.rake

Usage:

$ pwd
/my_project
$ mkdir tasks
$ wget https://gist.github.com/tyabe/5518782/raw/9e2751b072b044e4b8ae6fa3acedf46f7c3d2221/stacked_middlewares.rake -P tasks/
$ rake middleware
Application: MyProject::App
    Rack::Session::Cookie
    Padrino::ShowExceptions
    Padrino::Logger::Rack
    Padrino::Reloader::Rack
    Rack::MethodOverride
    Rack::Head
    Rack::Protection::FrameOptions
    Rack::Protection::AuthenticityToken

なお、実際にどのような順番で call されていくかは、@udzura さんの書かれた[Rack Middleware たちがどのように呼ばれるかを見てみよう(e.g. Sinatra)]が参考になります。

これらを使って確認してみたところ、Padrino内でレシーバの異なる use は以下の順番で使われる様です。

  1. Padrino.use
  2. default middlewares
  3. Padrino::Application.use
  4. MyProject::App.use

例外が発生した場合はこの逆順で伝搬されるので、例外をキャッチするようなミドルウェアを書いた場合には、どのレシーバを使って積むのが良いかを気にする必要がありそうですね。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10