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