Return a specific http status code in Rails

后端 未结 3 1587
无人及你
无人及你 2021-01-31 01:08

How do you return 503 Service Unavailable in Rails for the entire application?

Also, how do you do the same for specific controllers?

相关标签:
3条回答
  • 2021-01-31 01:52

    For the entire application:

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

    If you wanted a custom error page, you could do:

    render 'custom_unavailable_page', :status => :service_unavailable    
    

    If you don't want it for specific controllers:

    # SomeController
    skip_before_filter :return_unavailable_status
    
    0 讨论(0)
  • 2021-01-31 01:56

    You can use head

    head 503
    # or
    head :service_unavailable
    
    0 讨论(0)
  • 2021-01-31 01:57

    The following works for me:

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

    The :response for the HTML response just in case it's accessed from the browser.

    The render head 503 does not seem to be working with the above statement.

    0 讨论(0)
提交回复
热议问题