| |
| |
Acknowledgments | |
| |
| |
Introduction | |
| |
| |
| |
Getting Started | |
| |
| |
| |
Installing Rails | |
| |
| |
| |
Installing on Windows | |
| |
| |
| |
Installing on Mac OS X | |
| |
| |
| |
Installing on Linux | |
| |
| |
| |
Choosing a Rails Version | |
| |
| |
| |
Setting Up Your Development Environment | |
| |
| |
| |
Rails and Databases | |
| |
| |
| |
Instant Gratification | |
| |
| |
| |
Creating a New Application | |
| |
| |
| |
Hello, Rails! | |
| |
| |
| |
Linking Pages Together | |
| |
| |
| |
The Architecture of Rails Applications | |
| |
| |
| |
Models, Views, and Controllers | |
| |
| |
| |
Rails Model Support | |
| |
| |
| |
Action Pack: The View and Controller | |
| |
| |
| |
Introduction to Ruby | |
| |
| |
| |
Ruby Is an Object-Oriented Language | |
| |
| |
| |
Data Types | |
| |
| |
| |
Logic | |
| |
| |
| |
Organizing Structures | |
| |
| |
| |
Marshaling Objects | |
| |
| |
| |
Pulling It All Together | |
| |
| |
| |
Ruby Idioms | |
| |
| |
| |
Building an Application | |
| |
| |
| |
The Depot Application | |
| |
| |
| |
Incremental Development | |
| |
| |
| |
What Depot Does | |
| |
| |
| |
Lets Code | |
| |
| |
| |
Task A: Creating the Application | |
| |
| |
| |
Iteration A1: Creating the Products Maintenance Application | |
| |
| |
| |
Iteration A2: Making Prettier Listings | |
| |
| |
| |
Task B: Validation and Unit Testing | |
| |
| |
| |
Iteration B1: Validating! | |
| |
| |
| |
Iteration B2: Unit Testing of Models | |
| |
| |
| |
Task C: Catalog Display | |
| |
| |
| |
Iteration C1: Creating the Catalog Listing | |
| |
| |
| |
Iteration C2: Adding a Page Layout | |
| |
| |
| |
Iteration C3: Using a Helper to Format the Price | |
| |
| |
| |
Iteration C4: Functional Testing of Controllers | |
| |
| |
| |
Iteration C5: Caching of Partial Results | |
| |
| |
| |
Task D: Cart Creation | |
| |
| |
| |
Iteration D1: Finding a Cart | |
| |
| |
| |
Iteration D2: Connecting Products to Carts | |
| |
| |
| |
Iteration D3: Adding a Button | |
| |
| |
| |
Task E: A Smarter Cart | |
| |
| |
| |
Iteration E1: Creating a Smarter Cart | |
| |
| |
| |
Iteration E2: Handling Errors | |
| |
| |
| |
Iteration E3: Finishing the Cart | |
| |
| |
| |
Task F: Add a Dash of Ajax | |
| |
| |
| |
Iteration F1: Moving the Cart | |
| |
| |
| |
Iteration F2: Creating an Ajax-Based Cart | |
| |
| |
| |
Iteration F3: Highlighting Changes | |
| |
| |
| |
Iteration F4: Hiding an Empty Cart | |
| |
| |
| |
Iteration F5: Making Images Clickable | |
| |
| |
| |
Testing Ajax Changes | |
| |
| |
| |
Task G: Check Out! | |
| |
| |
| |
Iteration G1: Capturing an Order | |
| |
| |
| |
Iteration G2: Atom Feeds | |
| |
| |
| |
Task H: Sending Mall | |
| |
| |
| |
Iteration H1: Sending Confirmation Emails | |
| |
| |
| |
Iteration H2: Integration Testing of Applications | |
| |
| |
| |
Task I: Logging In | |
| |
| |
| |
Iteration I1: Adding Users | |
| |
| |
| |
Iteration I2: Authenticating Users | |
| |
| |
| |
Iteration I3: Limiting Access | |
| |
| |
| |
Iteration I4: Adding a Sidebar, More Administration | |
| |
| |
| |
Task J: Internationalization | |
| |
| |
| |
Iteration J1: Selecting the Locale | |
| |
| |
| |
Iteration J2: Translating the Storefront | |
| |
| |
| |
Iteration J3: Translating Checkout | |
| |
| |
| |
Iteration J4: Add a Locale Switcher | |
| |
| |
| |
Task K: Deployment and Production | |
| |
| |
| |
Iteration K1: Deploying with Phusion Passenger and MySQL | |
| |
| |
| |
Iteration K2: Deploying Remotely with Capistrano | |
| |
| |
| |
Iteration K3: Checking Up on a Deployed Application | |
| |
| |
| |
Depot Retrospective | |
| |
| |
| |
Rails Concepts | |
| |
| |
| |
Documenting What We Have Done | |
| |
| |
| |
Rails in Depth | |
| |
| |
| |
Finding Your Way Around Rails | |
| |
| |
| |
Where Things Go | |
| |
| |
| |
Naming Conventions | |
| |
| |
| |
Active Record | |
| |
| |
| |
Defining Your Data | |
| |
| |
| |
Locating and Traversing Records | |
| |
| |
| |
Creating. Reading. Updating, and Deleting (CRUD) | |
| |
| |
| |
Participating in the Monitoring Process | |
| |
| |
| |
Transactions | |
| |
| |
| |
Action Dispatch and Action Controller | |
| |
| |
| |
Dispatching Requests to Controllers | |
| |
| |
| |
Processing of Requests | |
| |
| |
| |
Objects and Operations That Span Requests | |
| |
| |
| |
Action View | |
| |
| |
| |
Using Templates | |
| |
| |
| |
Generating Forms | |
| |
| |
| |
Processing Forms | |
| |
| |
| |
Uploading Files to Rails Applications | |
| |
| |
| |
Using Helpers | |
| |
| |
| |
Reducing Maintenance with Layouts and Partials | |
| |
| |
| |
Migrations | |
| |
| |
| |
Creating and Running Migrations | |
| |
| |
| |
Anatomy of a Migration | |
| |
| |
| |
Managing Tables | |
| |
| |
| |
Advanced Migrations | |
| |
| |
| |
When Migrations Go Bad | |
| |
| |
| |
Schema Manipulation Outside Migrations | |
| |
| |
| |
Nonbrowser Applications | |
| |
| |
| |
A Stand-Alone Application Using Active Record | |
| |
| |
| |
A Library Function Using Active Support | |
| |
| |
| |
Rails' Dependencies | |
| |
| |
| |
Generating XML with Builder | |
| |
| |
| |
Generating HTML with ERB | |
| |
| |
| |
Managing Dependencies with Bundler | |
| |
| |
| |
Interfacing with the Web Server with Rack | |
| |
| |
| |
Automating Tasks with Rake | |
| |
| |
| |
Survey of Rails' Dependencies | |
| |
| |
| |
Rails Plugins | |
| |
| |
| |
Credit Card Processing with Active Merchant | |
| |
| |
| |
Beautifying Our Markup with Haml | |
| |
| |
| |
Pagination | |
| |
| |
| |
FindingMoreatRailsPlugins.org | |
| |
| |
| |
Where to Go from Here | |
| |
| |
| |
Bibliography | |
| |
| |
Index | |