「500 Internal Server Error」が出るときは?

Rails2.0をWEBrickでテストしているとき「500 Internal Server Error」が出ることがあります。致命的なエラーのときに出るようです。

エラーの確認

Rails(WEBrick)が「/myapp/log/development.log」にエラーを吐いているはずです。今回はDBを作らず動かしてみたので、↓のようなログが書かれています。

/!\ FAILSAFE /!\  Wed May 07 10:03:45 +0900 2008
  Status: 500 Internal Server Error
  #42000Unknown database 'myapp_development'

どこが出しているかな

ソースを見ると、たぶんここ(↓)の「failsafe_rescue()」が出していそうです。わかったからといってどうなるわけでもありませんが。

$ e /myapp/vendor/rails/actionpack/lib/action_controller/dispatcher.rb

  def failsafe_rescue(exception)
    self.class.failsafe_response(@output, '500 Internal Server Error', exception) do
      if @controller ||= defined?(::ApplicationController) ? ::ApplicationController : Base
        @controller.process_with_exception(@request, @response, exception).out(@output)
      else
        raise exception
      end
    end
  end

参考

こちら(→あきおの日記)が勉強になりました。