Table of Contents

November 10th, 2006

CHAPTER 1 Project Setup and Proof of Concept
Introducing the Emporium Project 1
Installing the Software 2
Installing Ruby 4
Installing RubyGems 5
Installing Ruby on Rails 6
Installing MySQL 8
Installing the MySQL Driver 9
Introducing Scrum 10
Creating the Emporium Application 12
Creating the Skeleton Application 12
Creating the Emporium Database 14
Starting Emporium for the First Time 18
How Does Ruby on Rails Work? 20
Implementing the About Emporium User Story 20
Running the Generate Script 21
Modifying the Generated View 22
Creating the Layout 23
Modifying the Generated Controller 27
Summary 28
CHAPTER 2 Author Management
Using Test-Driven Development 29
Testing in Rails 30
Unit Testing 30
Functional Testing 31
Integration Testing 31
Creating the ActiveRecord Model 31
Using ActiveRecord Migrations 32
Running Unit Tests 36
Creating the Controller 37
Implementing the User Stories 39
Adding an Author 39
Listing Authors 48
Viewing an Author 50
Editing an Author 52
Deleting an Author 54
Adjusting the Flash Notifications 55
Summary 57
CHAPTER 3 Book Inventory Management
Getting the Requirements 59
Using Scaffolding 60
Implementing the Publisher Administration Interface 61
Updating the Schema with the Publishers Table 61
Generating Publisher Code with the Scaffolding Script 62
Completing the Add Publisher User Story 64
Completing the View Publisher User Story 66
Completing the Edit Publisher User Story 68
Implementing the Book Administration Interface 69
Updating the Schema with the Books Table 69
Creating the Book Model 73
ActiveRecord Mapping 73
Modifying the Generated Models 77
Cloning the Database 80
Unit Testing Validations 81
Unit Testing the ActiveRecord Mappings 82
Generating Book Administration Code with the Scaffolding Script 88
Integration Testing 90
Completing the Add Book User Story 91
Completing the Upload Book Cover User Story 102
Completing the List Books User Story 104
Completing the View Book User Story 107
Completing the Edit Book User Story 110
Testing the Delete Book User Story 112
Summary 112
CHAPTER 4 Book Catalog Browsing
Getting the Book Catalog Requirements 113
Implementing the Book Catalog Interface 114
Implementing the Browse Books User Story 116
Implementing the View Book Details User Story 120
Implementing the Search Books User Story 125
Implementing the Get Latest Books User Story 133
Creating an RSS Feed 136
Summary 139
CHAPTER 5 Shopping Cart Implementation
Getting the Shopping Cart Requirements 141
Setting Up the Shopping Cart 142
Creating the Controller 142
Adding a Functional Test 142
Creating the Models 143
Modifying the Controller 145
Creating the Views 147
Implementing the User Stories 152
Implementing the Add Items to the Cart User Story 152
Implementing the Remove Items from the Cart User Story 161
Implementing the Clear the Cart User Story 166
Summary 168
CHAPTER 6 Forum Implementation
Getting the Forum Requirements 169
Using the Threaded Forum Plugin 170
Setting Up the Forum 171
Updating the Database Schema 171
Modifying the Model 175
Unit Testing the Model 176
Generating the Controller and View 177
Implementing the User Stories 179
Implementing the Post to Forum User Story 179
Implementing the View Forum User Story 185
Implementing the View Post User Story 190
Implementing the Reply to Post User Story 192
Summary 195
CHAPTER 7 Tagging Support
Getting the Tagging Requirements 197
Using the Tagging RubyGem 198
Setting Up for Tagging 201
Updating the Database Schema 201
Preparing the Models 203
Unit Testing the Model 204
Using the Console to Test the Model 205
Implementing the User Stories 207
Implementing the Assign Tags User Story 207
Implementing the Edit Tags User Story 211
Implementing the List Tags and Show Tag User Stories 215
Implementing the Recommend Books User Story 218
Summary 221
CHAPTER 8 Security
Getting the Authentication Requirements 223
Using the Authentication Plugin 224
Implementing the User Stories 227
Implementing the Log In User Story 227
Implementing the Fail Log In User Story 233
Implementing the Reset Password User Story 238
Protecting Your Application 248
Cross-Site Scripting 248
URL and Form Manipulation 248
SQL Injection 249
Cross-Site Request Forgery 250
Summary 250
CHAPTER 9 Checkout and Order Processing
Getting the Checkout and Order-Processing Requirements 252
Implementing the Check Out User Story 252
Creating the Models 252
Adding Validations to the Model 257
Creating the Controller and Integration Test 259
Creating the View 262
Saving the Order Information 268
Integrating with Payment Gateways 271
Installing the Active Merchant Plugin 271
Integrating with PayPal 272
Integrating with AuthorizeNet 280
Using the Payment Gem 284
Implementing the Administrator User Stories 286
Implementing the View Orders User Story 286
Implementing the View Order User Story 290
Implementing the Close Order User Story 292
Calculating Shipping Costs and Taxes 294
Using the Shipping Gem 294
Calculating Taxes 296
Summary 296
CHAPTER 10 Multiple Language Support
Getting the Localization Requirements 297
Using the Globalize Plugin 298
Localizing with Globalize 300
Setting Up Globalize 303
Implementing the User Stories 304
Implementing the Change Locale User Story 304
Implementing the Translation User Stories 306
Translating the View and the Book Model 313
Translating the View 313
Translating the Model 317
Localizing Dates, Numbers, and Currency 319
Localizing Dates 319
Localizing Numbers and Currencies 320
Adding Unicode (UTF-8) Support 322
Setting Character Encoding in HTML 323
Setting Character Encoding for the HTTP Response 324
Changing the Database to Use UTF-8 324
Summary 326
CHAPTER 11 Acceptance Testing
Using Selenium 327
Writing Selenium Tests 330
Selenium Commands 330
Selenium Test Formats 334
The First Acceptance Test 335
Recording Selenium Tests 337
Using the Selenium IDE 337
Recording the View Forum Acceptance Test 340
Recording the Post to Forum Acceptance Test 345
Recording the Show Post Acceptance Test 347
Recording the Reply to Post Acceptance Test 348
Summary 350
CHAPTER 12 Application Deployment
Setting Up the Production Environment 351
Connecting to the Production Server: SSH 352
Installing the Web Server: LightTPD 353
Installing the Application Server: Ruby on Rails and FastCGI 356
Installing the Database Server (MySQL) 358
Configuring LightTPD 358
Creating the Production Database 365
Deploying the Application Manually 366
Copying the Application 367
Creating Users and Groups 367
Starting LightTPD 368
Starting FastCGI Processes 369
Automating Deployment 371
Installing Capistrano 371
Creating the Capistrano Deployment Recipe 371
Running the Setup Task 375
Deploying to Production 376
Starting LightTPD 379
Summary 380
CHAPTER 13 Performance Optimization
Performance and Scaling 381
Measuring Performance 382
Checking the Log File 382
Using Rails Analyzer 383
Caching 388
Page Caching 388
Action Caching 390
Fragment Caching 390
Fragment Stores 392
Caching ActiveRecord Objects 395
Common Performance Problems in Rails 397
Rendering Speed 397
Database Access 399
Summary 401

1 Response to “Table of Contents”

  1. M. Mortazavi Says:

    Some place to post suggestions for the book might be useful.

    For example, on page 4 for the installation of zlib1g-dev, it might have been useful to note that in an Ubuntu environment, it might be useful to first run “sudo apt-get update” prior to running “sudo apt-get install zlib1g-dev”. Otherwise, while ruby might install and say it has (as noted in the book) rubygem may not install properly.

    This is really an Ubuntu development environment issue.

Leave a Reply