config.consider_all_requests_local=trueにしたら、Routing Error時に「作成したview」が表示されない。


「Ruby on Rails6実践ガイド」に沿ってアプリを作っていると、この仕様に気づかず4時間ほど詰まってしまったので記事にします。

状況

Windows10home、VirtualBoxにUbuntu、更にDocker入れてRailsアプリ作成。
クライアントによって指定されたURLパスに対応するルーティングが存在しない場合(Routing Error)、デフォルトの

ではなく、自作した

を表示させたいが、

この表示になる。
サーバー実行はターミナル(端末)でこれ。

$ bin/rails s -e production -b 0.0.0.0

原因

本番環境でサーバー立ち上げたらターミナルにログが出ず、エラーの時に何が原因か分かりにくいので、

- config.consider_all_requests_local=false
+ config.consider_all_requests_local=true

と、falseからtrueに変えていたから。
falseに直すとRouting Error時に作成した画面が表示されました。
Rooting Errorになってもviewを表示する設定になっているから、そのviewが出ると思っていました。
他のエラーの時は、ちゃんと作成した画面が表示されるので。
ちなみにfalseにもどしても、railsサーバーを再起動しないと反映されません。

ちなみにconfig.consider_all_requests_localとは

trueにしたらブラウザにエラーレポートが表示され、falseにしたら表示されない。
config/developments/内にあり。