Ruby 如何显示乘客托管的模块化Sinatra应用程序中发生的错误?
我有一门应用课程Ruby 如何显示乘客托管的模块化Sinatra应用程序中发生的错误?,ruby,development-environment,sinatra,passenger,Ruby,Development Environment,Sinatra,Passenger,我有一门应用课程 class MyApplication < Sinatra::Base # ... do something ... end 我通常使用Passenger作为我的开发环境,对于正常的非模块化Sinatra应用程序来说,它工作得非常好。但是在这种情况下,我没有错误输出,取而代之的是默认的内部服务器错误页面,这不是很有帮助。有没有办法启用默认错误处理?查看您的web服务器错误日志。同样的问题困扰了我很长一段时间,我终于想出了恢复默认错误处理的神奇咒语。事实证明,它与乘客
class MyApplication < Sinatra::Base
# ... do something ...
end
我通常使用Passenger作为我的开发环境,对于正常的非模块化Sinatra应用程序来说,它工作得非常好。但是在这种情况下,我没有错误输出,取而代之的是默认的内部服务器错误页面,这不是很有帮助。有没有办法启用默认错误处理?查看您的web服务器错误日志。同样的问题困扰了我很长一段时间,我终于想出了恢复默认错误处理的神奇咒语。事实证明,它与乘客无关,而是使用Sinatra::Base而不是经典(顶级)应用程序造成的。如果您是Sinatra::Base的子类,那么许多选项都有不同的默认值。在这种情况下,您需要更改的选项是:
set :show_exceptions, true if development?
如果您还想重新启用使用应用内错误处理程序的(相关)功能,请使用:
set :raise_errors, false
这允许错误执行。。。结束
block,像在经典应用程序中一样工作
有关classic和Sinatra::Base应用程序之间差异的更多信息,请参见和。您可以使用Rack::ShowExceptions显示堆栈跟踪
configure do
enable :dump_errors,:raise_errors
use Rack::ShowExceptions
end
并使用Sinatra错误处理程序显示
$exception = Sinatra::ShowExceptions.new(self)
error do
@error = env['sinatra_error']
html_body = $exception.pretty(env,@error)
end
这对我不起作用。我仍然无法捕捉到这个错误,也许更实用一点:
set:show\u exceptions,development?
$exception = Sinatra::ShowExceptions.new(self)
error do
@error = env['sinatra_error']
html_body = $exception.pretty(env,@error)
end