我有一个应用程序类
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.