sinatra重定向错误

gra*_*hez 2 ruby heroku sinatra

我在Sinatra模块化应用程序中重定向错误时遇到问题.我正在Heroku上部署,当出现错误时,应用程序就会死掉.

我希望它能够捕获此错误,重定向到错误页面并正常运行.

我在基类中设置了如下内容:

set :raise_errors, false
Run Code Online (Sandbox Code Playgroud)

error do
    redirect to('/')
end
Run Code Online (Sandbox Code Playgroud)

但是当我raise从路径块中发生错误时,它就会转到标准的Sinatra错误页面.

我需要做些什么来捕捉我的错误并重定向?

Sea*_*ond 9

你还需要

set :show_exceptions, false
Run Code Online (Sandbox Code Playgroud)

这是一个简单的演示

require "sinatra"

class App < Sinatra::Base

    set :raise_errors, false
    set :show_exceptions, false

    get '/' do
        return 'Hello, World!'
    end

    get '/error' do
        return 'You tried to divide by zero!'
    end

    get '/not-found' do
        return 'There is nothing there'
    end

    get '/raise500' do
        raise 500
    end

    get '/divide-by-zero' do
        x = 5/0
    end

    error do
        redirect to('/')
    end

    error 404 do
        redirect to('/not-found')
    end

    error ZeroDivisionError do
        redirect to('/error')
    end

end
Run Code Online (Sandbox Code Playgroud)

没有:show_exceptions设置/raise500/divide-by-zero返回通用的Sinatra错误页面,但有了它,它们会像你期望的那样重定向.