ruby-on-rails http http-status-codes http-status-code-503

ruby on rails - Devuelve un código de estado http específico en Rails



ruby-on-rails http-status-codes (3)

¿Cómo se devuelve 503 Service Unavailable in Rails para toda la aplicación?

Además, ¿cómo haces lo mismo con los controladores específicos?


Lo siguiente funciona para mí:

format.any { render :json => {:response => ''Unable to authenticate'' },:status => 401 }

La :response a la respuesta HTML en caso de que se acceda desde el navegador.

El cabezal de renderizado 503 no parece estar funcionando con la declaración anterior.


Para toda la aplicación:

# ApplicationController before_filter :return_unavailable_status private def return_unavailable_status render :nothing => true, :status => :service_unavailable end

Si quería una página de error personalizada, podría hacer lo siguiente:

render ''custom_unavailable_page'', :status => :service_unavailable

Si no lo quiere para controladores específicos:

# SomeController skip_before_filter :return_unavailable_status


Puede usar :status

render :status => 503

Puedes hacerlo globalmente poniéndolo en ApplicationController

before_filter :render_unavailable def render_unavailable render :nothing => true, :status => 503 end

Actualizar

Rails 5+

head 503 # or head :service_unavailable

No coloques la render head: 503 solo cabeza. De lo contrario, obtendrá el error "doble render".