エラーテンプレートが表示されない
Ruby on Railsでは、500エラーなどが発生したときには /public/500.html が呼ばれるような想定になっています。
しかしRailsバージョン2.0.0〜2.2.3では、このテンプレートは呼ばれることはない。
エラーを表示させる部分のコードは下記になります。
C:\Ruby\lib\ruby\gems\1.8\gems\actionpack-【バージョン番号】\lib\action_controller\dispatcher.rb def failsafe_response_body(status) error_path = "#{error_file_path}/#{status.to_s[0..3]}.html" if File.exist?(error_path) File.read(error_path) else "<html><body><h1>#{status}</h1></body></html>" end end
『エラー用のテンプレートがあればテンプレートを、なければエラーのみを表示させる』というコードです。
ところが、このコード部分
#{status.to_s[0..3]}.html
これでは、たとえば500エラーだったときには、『 500 .html 』と間にスペースが入ってしまいます。
当然、エラー用テンプレートは見つかることはなく、テンプレートは表示されません。
正しくは
#{status.to_s[0..2]}.html
になるはずです。
このバグはエラー表示の実装方法が変わったことによって、結果的に修正がされています。
スポンサーリンク