LoginSignup
10
9

More than 5 years have passed since last update.

Rails で controller を作らずに root ページを 404 にする

Last updated at Posted at 2016-07-05

Rails で config/routes.rbroot メソッドを記述しないと / にアクセスしたとき、Rails の "Welcome aboard" ページが表示される。

これを解消するには、ふつう root を適当なコントローラの #index なりのアクションにマッピングするだろうが、コントローラを作らずに短い記述で / を 404 (Not Found) にする方法を教えてもらった。

やり方

# config/routes.rb
Rails.application.routes.draw do
  root to: ->(env) { [404, {}, []] }
end

このように、Rack インタフェースに準拠した Proc オブジェクトにマッピングすればよい。

もちろん、404 以外も可能で、 [200, {"Content-Type" => "text/plain"}, ["OK"]] なども可能だ。

/ をアプリケーションロジックで扱わない場合に使えるテクニックだと思う。

引数の env について

これを省略すると、他の Rack Middleware から @app.call(env) と呼びだされた場合にエラーになるようだ。

参考

10
9
0

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
9