I'm excited to announce that the manuscript of Rails in a Nutshell is now available in draft format through the O'Reilly Open Feedback Publishing System (OFPS).
Rails in a Nutshell aims to be the perfect desktop companion for your Rails 3.0 development by providing condensed referenced material and tips.
We decided to release the book through the O'Reilly Open Feedback System so that you can read the manuscript while it is in progress and help create exactly the book you want. Consider it an agile process for book writing. We can incorporate your feedback and correct errors much more quickly before the book hits printers.
We're aiming to have the book ready for the launch of Rails 3.0. I strongly encourage you to check out the current draft and provide any feedback or comments you might have.
You can follow the progress of the book on Twitter via twitter.com/railsnutshell..

The makers of Freckle Time Tracking have created a beautiful and informative guide about getting started with Active Merchant called Jump Start Credit Card Processing. The guide is free to download and jam packed with information and great design. There is even a checklist for getting a merchant account near the end, which will definitely easy the pain of getting started.
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 Code | Status Message | Symbol |
|---|---|---|
| 1xx Informational | ||
| 100 | Continue | :continue |
| 101 | Switching Protocols | :switching_protocols |
| 102 | Processing | :processing |
| 2xx Success | ||
| 200 | OK | :ok |
| 201 | Created | :created |
| 202 | Accepted | :accepted |
| 203 | Non-Authoritative Information | :non_authoritative_information |
| 204 | No Content | :no_content |
| 205 | Reset Content | :reset_content |
| 206 | Partial Content | :partial_content |
| 207 | Multi-Status | :multi_status |
| 226 | IM Used | :im_used |
| 3xx Redirection | ||
| 300 | Multiple Choices | :multiple_choices |
| 301 | Moved Permanently | :moved_permanently |
| 302 | Found | :found |
| 303 | See Other | :see_other |
| 304 | Not Modified | :not_modified |
| 305 | Use Proxy | :use_proxy |
| 307 | Temporary Redirect | :temporary_redirect |
| 4xx Client Error | ||
| 400 | Bad Request | :bad_request |
| 401 | Unauthorized | :unauthorized |
| 402 | Payment Required | :payment_required |
| 403 | Forbidden | :forbidden |
| 404 | Not Found | :not_found |
| 405 | Method Not Allowed | :method_not_allowed |
| 406 | Not Acceptable | :not_acceptable |
| 407 | Proxy Authentication Required | :proxy_authentication_required |
| 408 | Request Timeout | :request_timeout |
| 409 | Conflict | :conflict |
| 410 | Gone | :gone |
| 411 | Length Required | :length_required |
| 412 | Precondition Failed | :precondition_failed |
| 413 | Request Entity Too Large | :request_entity_too_large |
| 414 | Request-URI Too Long | :request_uri_too_long |
| 415 | Unsupported Media Type | :unsupported_media_type |
| 416 | Requested Range Not Satisfiable | :requested_range_not_satisfiable |
| 417 | Expectation Failed | :expectation_failed |
| 422 | Unprocessable Entity | :unprocessable_entity |
| 423 | Locked | :locked |
| 424 | Failed Dependency | :failed_dependency |
| 426 | Upgrade Required | :upgrade_required |
| 5xx Server Error | ||
| 500 | Internal Server Error | :internal_server_error |
| 501 | Not Implemented | :not_implemented |
| 502 | Bad Gateway | :bad_gateway |
| 503 | Service Unavailable | :service_unavailable |
| 504 | Gateway Timeout | :gateway_timeout |
| 505 | HTTP Version Not Supported | :http_version_not_supported |
| 507 | Insufficient Storage | :insufficient_storage |
| 510 | Not Extended | :not_extended |
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.