This post originated from an RSS feed registered with Ruby Buzz
by Obie Fernandez.
Original Post: The Rails Way (Table of Contents)
Feed Title: Obie On Rails (Has It Been 9 Years Already?)
Feed URL: http://jroller.com/obie/feed/entries/rss
Feed Description: Obie Fernandez talks about life as a technologist, mostly as ramblings about software development and consulting. Nowadays it's pretty much all about Ruby and Ruby on Rails.
I'm proud to reveal the table of contents for my upcoming book The Rails Way publicly, for the first time ever. The first RoughCut PDF version is now up on Safari, and contains the first seven chapters. I'm supposed to submit 12 more chapters at the end of May, after which a new RoughCut will be released.
By publishing the outline here, I'm not just being exhibitionist or trying to drum up attention for the book. I am soliciting your feedback, so please check it out and email me your unvarnished opinions and suggestions. Keep in mind that I'm trying to put out the must-have serious reference title for Rails professionals. The Rails Way doesn't have tutorial material, neither is it tailored for beginners.
According to my current schedule, the final push to get this baby done and out to the publisher is the month of June. The outline below is copied directly out of my manuscript. Some of the chapters (such as 10 and 11) remain mostly to be written and I don't have a firm outline for that content yet. Suggestions are deeply appreciated.
INTRODUCTION
Ruby and Rails
The Rise of Rails
Mainstream acceptance?
Simply being exceptional
Extreme productivity in the enterprise
Opinionated Software
About This Book
Productivity
Sample application and code snippets
Prerequisites
Recommended Reading
Regarding David Heinemeier Hansson a.k.a. DHH
Goals
Required Hardware
Required Software
CHAPTER 1 RAILS ENVIRONMENTS AND CONFIGURATION
Startup
Default environment settings
Bootstrapping
Initializer
Builtin Rails Info
Configuration
Additional Configuration
Development Mode
Automatic class reloading
The Rails classloader
Test Mode
Production Mode
Custom Environments
CHAPTER 2 WORKING WITH CONTROLLERS
The dispatcher, where it all begins
Up close and personal with the dispatcher
The role of the controller
Render unto Server....
When in doubt, render
Explicit rendering
Rendering another action?s template
Rendering a different template altogether
Rendering a partial template
Rendering inline template code
Rendering text
Rendering other types of structured data
Rendering nothing
Rendering options
Redirecting
Controller/view communication
"Instance" is relative
CHAPTER 3 ROUTING
The two faces of routing
Bound parameters
Wildcard components ("receptors")
Static strings
The routes.rb file
The default route
Default route recognition
Spotlight on the :id field
Default route generation
Modifying the default route
The ante-default route and respond_to
respond_to and the HTTP-Accept header
The empty route
Writing custom routes
Using static strings
Using your own "receptors"
A note on route order
Using regular expressions in routes
Default parameters and the url_for method
What happened to :id?
Using literal URLS
Route globbing
Globbing auction item descriptions
Named routes
_path vs. _url
What to name your routes
A bit of argument sugar
A little sugar with your sugar?
The special scope method with_options
CHAPTER 4 REST, RESOURCES AND RAILS
REST in a rather small nutshell
REST in Rails
Routing and CRUD
Resources and representations
REST resources and Rails
From named routes to REST support
Re-enter the HTTP verb
The standard RESTful controller actions
The PUT and DELETE cheat
Singular and plural RESTful routes
The special pairs: new/create and edit/update
Nested resources
To nest, or not to nest?
Another route to nesting: path_prefix
Namespacing RESTful routes with :name_prefix
Adding custom actions with :member and :collection
Controller-only resources
Singleton resource routes
Returning different representations of resources with respond_to
Formatted named routes
At home with the Rails REST action set
Index
Show
Destroy
New and Create
Edit and Update
CHAPTER 5 REFLECTING ON RAILS ROUTING
Examining routes in the application console
Dumping routes
Anatomy of a Route object
Recognition and generation in the console
Named routes in the console
Testing routes
A word about argument syntax
The Routing Navigator plugin
Further Resources
CHAPTER 6 WORKING WITH ACTIVERECORD
Tables as classes, rows as instances, columns as attributes
Migrations
Creating migrations
Migration API
Defining columns
Macro-style methods
Relationship declarations
Convention over configuration
Pluralization
Setting names manually
Legacy naming schemes
Defining Attributes
Default Attribute Values
Serialized attributes
CRUD: Creating, Reading, Updating, Deleting
Creating new ActiveRecord instances
Reading ActiveRecord objects
Reading and writing attributes
Accessing and manipulating attributes before they are typecast
Reloading
Dynamic attribute-based finders
Custom SQL Queries
The Query Cache
Updating by id
Updating by condition
Updating a particular instance
Updating specific attributes
Convenience updaters
Controlling access to attributes
Deleting and destroying
Database Locking
Optimistic Locking
Pessimistic Locking
Considerations
Advanced Finding
Conditions
Ordering of find results
Limit and offset
Select option
From option
Locking option
Read Only
Group By option
Joining and including associations
Connections to multiple databases in different models
Using the database connection directly
The DatabaseStatements module
Other connection methods
Other Configuration Options
CHAPTER 7 ACTIVE RECORD ASSOCIATIONS
Association Proxies
AssociationProxy
One-to-many relationships
Adding associated objects to a collection
AssociationCollection
belongs_to
belongs_to options
has_many
has_many options
Many-to-many relationships
has_and_belongs_to_many
has_many :through
has_many :through options
One-to-one relationships
has_one
has_one options
CHAPTER 8 ACTIVERECORD VALIDATIONS
Finding Errors
The simple declarative validations
validates_acceptance_of
validates_associated
validates_confirmation_of
validates_each
validates_inclusion_of validates_exclusion_of
validates_format_of
validates_length_of
validates_numericality_of
validates_presence_of
validates_uniqueness_of
Common validation options
Conditional validation
Working with the Errors object
Adding errors manually
Checking for errors
Custom validation
Skipping validations
CHAPTER 9 ADVANCED ACTIVERECORD
Callbacks and Observers
Object Identity
Single-Table Inheritance (STI)
Polymorphic has_many relationships
Modules for reusing common behavior
ActiveRecord Tricks
CHAPTER 10 ACTIONVIEW AND HELPERS
Layouts and Templates
CHAPTER 11 WORKING WITH FORMS
Form Helpers
Relevant Plugins
acts_as_dropdown
simply_helpful
CHAPTER 12 AJAX ON RAILS
Prototype
Firebug
The Prototype API
Top-level functions
Class
Extensions to JavaScript's Object class
Extensions to JavaScript's Array class
Extensions to the document object
Extensions to the Event class
Extensions to JavaScript's Function class
Extensions to JavaScript's Number class
Extensions to JavaScript's String class
The Ajax object
Ajax.Responders
Ajax.Base
Enumerable
Enumerable functions
Hash
ObjectRange
The Prototype object
PrototypeHelper
Calling a controller action with a link
Scriptaculous
Common API
Autocompleter
InPlaceEditor
The Effects
CHAPTER 13 SESSION MANAGEMENT
Settings
Secure sessions
Timing-out and session lifecycle
Session Timeout Plugin for Rails
ActiveRecord Session Store
Tracking active sessions
Enhanced session security
Cleaning up old sessions
Cookies
Reading and writing cookies
CHAPTER 14 LOGIN AND AUTHENTICATION
Acts as Authenticated
The User Model
Conditional callbacks
The Account Controller
The current user
Basic HTTP Authentication
CHAPTER 15 RAILS AND XML
First, the simple stuff
Learning from Array?s to_xml method
The XML Builder
CHAPTER 16 BACKGROUND PROCESSES
script/runner
DRb
BackgrounDRb
Getting started
Configuration
Understanding BackgrounDRb
Using the MiddleMan
CHAPTER 17 ACTIONMAILER
Setup
Mailer models
Sending
Receiving emails
Configuration
CHAPTER 18 INTERNATIONALIZATION
Encoding conversions
Globalize
CHAPTER 19 TESTING AND SPECS
Layout of Tests and Clarification of Terms
Test::Unit
Rake tasks related to testing
Running a single test
Fixtures
CSV Fixtures
Accessing fixture records from tests
Dynamic fixture data
Using fixture data in development mode
Generating fixtures from development data
Options
Drawbacks of Fixtures
Mocks and Stubs
Unit tests
Basics
Functional tests
Rails Integration Tests
Basics
The Integration Test API
Simple integration tests
Working with sessions
Acceptance tests
Acceptance Test First?
Selenium
Basics
Getting started
RSelenese
Partial Scripts
RSpec
BDD Fundamentals
Getting started
test/spec
RCov
Coverage Basics
Setup
CHAPTER 20 EXTENDING RAILS
Managing Plugins
Reusing Code
The plugin script
Subversion and script/plugin
Piston
Installation
Importing a vendor library
Converting existing vendor libraries
Updating
Locking and Unlocking Revisions
Piston properties
CHAPTER 21 RAILS PRODUCTION CONFIGURATIONS
[To be contributed by Zed Shaw]
CHAPTER 22 CAPISTRANO
Basics
Simple Deployment Recipes
Multi-Server Deployments
CHAPTER 23 PERFORMANCE TESTING AND TUNING
Benchmarking
The Ruby Memory Model
APPENDIX A RAILS ESSENTIALS
Subversion
Rake Tasks for Subversion
Edge Rails
Plugins worth their weight in gold
Annotate Models
Exception Notification
Query Trace
Debug View Helpers
Other plugins
Environmental concerns
Aliases
Color
Redgreen
APPENDIX B RUBY CODING, THE RAILS WAY
About Rails Idioms
Variable number of arguments plus options
Method chaining with alias_method_chain