Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 如何显示乘客托管的模块化Sinatra应用程序中发生的错误?_Ruby_Development Environment_Sinatra_Passenger - Fatal编程技术网

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