2012-11-16 2 views
2

Sinatra 모듈러 앱에서 오류시 리디렉션에 문제가 있습니다. Heroku에서 배포 중이며 오류가 발생하면 응용 프로그램이 종료됩니다.sinatra 리디렉션 오류

이 오류를 catch하고 오류 페이지로 리디렉션하여 정상적으로 작동하고 싶습니다. 나는 아래로 내 기본 클래스 일에 설정 한

:

set :raise_errors, false 

error do 
    redirect to('/') 
end 

하지만 난 raise 오류 경로 블록 내에서 그냥 표준시나 오류 페이지로 이동합니다.

오류를 찾아서 리디렉션하려면 어떻게해야합니까?

답변

9

는 또한

set :show_exceptions, false 

여기 :show_exceptions 설정 /raise500없이 간단한 데모

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 

그리고 일반시나 오류 페이지를 반환 /divide-by-zero 필요하지만, 당신이 기대하는 것처럼 그것으로 그들은 리디렉션합니다.

+0

고마워요! 이제 작동합니다. – grafthez