Rails HTTP Status Code to Symbol Mapping

Recently I had been wondering what the complete list of HTTP status code symbols was in Rails. Searching through Rails didn't yield any results for a symbol like :unprocessable_entity. Digging around in the Rails source code I found the file actionpack/lib/action_controller/status_codes.rb, which has the mapping of the status code to the status message. Then Rails defines the symbol to status code mapping dynamically from the status message.

The symbol used is an underscored version of the status message with no spaces. A quick Ruby script yields the following mapping:

Status CodeStatus MessageSymbol
1xx Informational
100Continue:continue
101Switching Protocols:switching_protocols
102Processing:processing
 
2xx Success
200OK:ok
201Created:created
202Accepted:accepted
203Non-Authoritative Information:non_authoritative_information
204No Content:no_content
205Reset Content:reset_content
206Partial Content:partial_content
207Multi-Status:multi_status
226IM Used:im_used
 
3xx Redirection
300Multiple Choices:multiple_choices
301Moved Permanently:moved_permanently
302Found:found
303See Other:see_other
304Not Modified:not_modified
305Use Proxy:use_proxy
307Temporary Redirect:temporary_redirect
 
4xx Client Error
400Bad Request:bad_request
401Unauthorized:unauthorized
402Payment Required:payment_required
403Forbidden:forbidden
404Not Found:not_found
405Method Not Allowed:method_not_allowed
406Not Acceptable:not_acceptable
407Proxy Authentication Required:proxy_authentication_required
408Request Timeout:request_timeout
409Conflict:conflict
410Gone:gone
411Length Required:length_required
412Precondition Failed:precondition_failed
413Request Entity Too Large:request_entity_too_large
414Request-URI Too Long:request_uri_too_long
415Unsupported Media Type:unsupported_media_type
416Requested Range Not Satisfiable:requested_range_not_satisfiable
417Expectation Failed:expectation_failed
422Unprocessable Entity:unprocessable_entity
423Locked:locked
424Failed Dependency:failed_dependency
426Upgrade Required:upgrade_required
 
5xx Server Error
500Internal Server Error:internal_server_error
501Not Implemented:not_implemented
502Bad Gateway:bad_gateway
503Service Unavailable:service_unavailable
504Gateway Timeout:gateway_timeout
505HTTP Version Not Supported:http_version_not_supported
507Insufficient Storage:insufficient_storage
510Not Extended:not_extended

Update

The cheat gem contains a cheat sheet for the status codes. You can get the gem and view the status codes as follows:


sudo gem install cheat
cheat status_codes

Thanks for the info Josh.

5 Responses to “Rails HTTP Status Code to Symbol Mapping”

  1. Aleksandr Says:

    Thanks! This is very useful.

  2. josh susser Says:

    I created a cheat page for this last year. Just install the cheat gem then type "cheat status_codes". If you see anything missing, just update the cheat. Still, it would probably be useful to have this stuff searchable in the Rails source somewhere.

  3. fanix Says:

    thx so much

  4. Cody Fauser Says:

    Josh,

    I didn't know that the status codes were included in the cheat gem. Thanks for the heads up.

    I agree that these codes should be in the Rails source, and I will contribute a doc patch for these codes to docrails in the near future.

  5. Soleone Says:

    Thanks Cody! Very helpful!

    And good to know there's a cheat sheet for it too...

Leave a Reply