tutorial que español docs ruby error-handling sinatra

que - sinatra ruby github



¿Cómo elevar un código de error personalizado en sinatra? (3)

Algo como el raise 404 genera un error, al igual que el raise ZeroDivisionError , lo que hace que tu aplicación arroje un 500 Error interno del servidor. La forma más sencilla de devolver un error específico es usar el status

get ''/raise404'' do status 404 end

También puede agregar un cuerpo de respuesta personalizado con body

get ''/raise403'' do status 403 body ''This is a 403 error'' end

Hice lo siguiente en mi aplicación sinatra:

disable :show_exceptions disable :raise_errors error do haml :error, :locals => {:error_message => request.env[''sinatra.error''].to_s} end get ''/error'' do raise "ERROR!!" end

Si visito /error , obtengo un código de respuesta 500 - Internal Server Error , que es de Dios y querido. Pero, ¿cómo cambio el código a, por ejemplo, 404 o 501?

La respuesta:

disable :show_exceptions disable :raise_errors get ''/error'' do halt(404,haml(:error, :locals => {:error_message => request.env[''sinatra.error''].to_s})) end


En lugar de raise "ERROR!!" , intente simplemente hacer el error 404 o el error 501 con un mensaje de estado opcional después del código de estado.

Actualización: si define su controlador de errores como error 400..501 do... por ejemplo, puede usar el error 501 "ERROR!!" en su ruta "/error" . Esto también pondrá su "ERROR !!" mensaje en env[''sinatra.error''].message .


Yo uso esto en bloque

if ''condition'' then do something else halt 500 , "error message" end #only without error erb :my_template

En caso de error mi log es así
HTTP / 1.1 "500 13 0.1000