如何覆盖 Ruby/Sinatra 中的默认内部服务器错误以显示 erb 文件

How to override default Internal Server Error in Ruby/Sinatra to display erb file

我想覆盖正常的 sinatra 内部服务器错误,所以它显示一个 erb 文件。

到目前为止我有这个:

set :show_exceptions, :after_handler
error 400..510 do
  erb :error
end

但它不起作用...有什么想法吗?

这很可能是因为您 运行 它处于开发模式。不确定你是否可以在那里压制它。但由于大多数时候在生产中显示此错误页面很重要,您只需将 RACK_ENV 设置为生产即可。

例如,如果您这样启动您的应用程序:

bundle exec ruby app.rb

只需添加RACK_ENV

RACK_ENV=production bundle exec ruby app.rb

大多数情况下,在生产服务器上,这是已设置的,因此无需显式设置。