ruby – 如何显示由Passenger托管的模块化Sinatra应用程序中发生的错误?

我有一个应用程序类

class MyApplication < Sinatra::Base
  # ... do something ...
end

和一个config.ru文件

# ... load libraries ...
run MyApplication

我通常使用Passenger作为我的开发环境,它对于普通的非模块化的Sinatra应用程序非常好.但在这种情况下,我没有错误输出,而是我得到默认的内部服务器错误页面,这不是很有帮助.有没有办法启用默认错误处理?

最佳答案 我已经被同样的问题困扰了很长一段时间,并且终于想出了带来默认错误处理的神奇咒语.事实证明它与Passenger无关,而是由使用Sinatra :: Base而不是经典(顶级)应用程序引起的.如果您是Sinatra :: Base的子类,则许多选项具有不同的默认值.在这种情况下,您需要更改的选项是:

set :show_exceptions, true if development?

如果您还想重新启用(相关)使用应用内错误处理程序的功能,请使用:

set :raise_errors, false

这允许错误做…结束块像在经典应用程序中一样工作.

有关经典和Sinatra :: Base应用程序之间差异的其他信息可以在this lighthouse ticket找到,其中有some discussion of this specific difference in the google group.

点赞