Rails AntiPatterns: Best Practice Ruby on Rails Refactoring

Paperback (Print)
Used and New from Other Sellers
Used and New from Other Sellers
from $14.75
Usually ships in 1-2 business days
(Save 67%)
Other sellers (Paperback)
  • All (11) from $14.75   
  • New (6) from $32.11   
  • Used (5) from $14.75   


The Complete Guide to Avoiding and Fixing Common Rails 3 Code and Design Problems

As developers worldwide have adopted the powerful Ruby on Rails web framework, many have fallen victim to common mistakes that reduce code quality, performance, reliability, stability, scalability, and maintainability. Rails™ AntiPatterns identifies these widespread Rails code and design problems, explains why they’re bad and why they happen—and shows exactly what to do instead.

The book is organized into concise, modular chapters—each outlines a single common AntiPattern and offers detailed, cookbook-style code solutions that were previously difficult or impossible to find. Leading Rails developers Chad Pytel and Tammer Saleh also offer specific guidance for refactoring existing bad code or design to reflect sound object-oriented principles and established Rails best practices. With their help, developers, architects, and testers can dramatically improve new and existing applications, avoid future problems, and establish superior Rails coding standards throughout their organizations.

This book will help you understand, avoid, and solve problems with

  • Model layer code, from general object-oriented programming violations to complex SQL and excessive redundancy
  • Domain modeling, including schema and database issues such as normalization and serialization
  • View layer tools and conventions
  • Controller-layer code, including RESTful code
  • Service-related APIs, including timeouts, exceptions, backgrounding, and response codes
  • Third-party code, including plug-ins and gems
  • Testing, from test suites to test-driven development processes
  • Scaling and deployment
  • Database issues, including migrations and validations
  • System design for “graceful degradation” in the real world
Read More Show Less

Product Details

  • ISBN-13: 9780321604811
  • Publisher: Addison-Wesley
  • Publication date: 11/25/2010
  • Series: Addison-Wesley Professional Ruby Series
  • Pages: 400
  • Sales rank: 987,496
  • Product dimensions: 6.90 (w) x 9.00 (h) x 0.80 (d)

Meet the Author

Chad Pytel is the founder and CEO of thoughtbot, a software development firm specializing in Ruby on Rails, and creators of Paperclip, Shoulda, FactoryGirl, and Hoptoad, among other projects. thoughtbot embraces both agile development methodologies and a “getting real” project philosophy. Chad coauthored Pro Active Record: Databases with Ruby and Rails (Apress, 2007) and has presented at various conferences around the world. To follow along with Chad and the rest of the thoughtbot team’s ideas on development, design, technology, and business, visit their blog at http://robots.thoughtbot.com.

Tammer Saleh
is the director of engineering at Engine Yard. He wrote the Shoulda testing framework, was the primary developer and project manager for thoughtbot’s fantastic Hoptoad service, and is an experienced Ruby on Rails trainer and speaker. In previous lives, he’s done AI development for the NCSA and the University of Illinois, as well as systems administration for both Citysearch.com and Caltech’s Earthquake Detection Network. You can find him online at http://tammersaleh.com.
Read More Show Less

Table of Contents

Foreword xi

Introduction xiii

Acknowledgments xvii

About the Authors xix

Chapter 1: Models 1

AntiPattern: Voyeuristic Models 2

AntiPattern: Fat Models 14

AntiPattern: Spaghetti SQL 31

AntiPattern: Duplicate Code Duplication 50

Chapter 2: Domain Modeling 73

AntiPattern: Authorization Astronaut 74

AntiPattern: The Million-Model March 79

Chapter 3: Views 89

AntiPattern: PHPitis 91

AntiPattern: Markup Mayhem 107

Chapter 4: Controllers 117

AntiPattern: Homemade Keys 118

AntiPattern: Fat Controller 123

AntiPattern: Bloated Sessions 154

AntiPattern: Monolithic Controllers 161

AntiPattern: Controller of Many Faces 167

AntiPattern: A Lost Child Controller 170

AntiPattern: Rat’s Nest Resources 180

AntiPattern: Evil Twin Controllers 184

Chapter 5: Services 189

AntiPattern: Fire and Forget 190

AntiPattern: Sluggish Services 195

AntiPattern: Pitiful Page Parsing 197

AntiPattern: Successful Failure 201

AntiPattern: Kraken Code Base 207

Chapter 6: Using Third-Party Code 211

AntiPattern: Recutting the Gem 213

AntiPattern: Amateur Gemologist 214

AntiPattern: Vendor Junk Drawer 216

AntiPattern: Miscreant Modification 217

Chapter 7: Testing 221

AntiPattern: Fixture Blues 223

AntiPattern: Lost in Isolation 236

AntiPattern: Mock Suffocation 240

AntiPattern: Untested Rake 246

AntiPattern: Unprotected Jewels 251

Chapter 8: Scaling and Deploying 267

AntiPattern: Scaling Roadblocks 268

AntiPattern: Disappearing Assets 271

AntiPattern: Sluggish SQL 272

AntiPattern: Painful Performance 282

Chapter 9: Databases 291

AntiPattern: Messy Migrations 292

AntiPattern: Wet Validations 297

Chapter 10: Building for Failure 301

AntiPattern: Continual Catastrophe 302

AntiPattern: Inaudible Failures 306

Index 311

Read More Show Less

Customer Reviews

Be the first to write a review
( 0 )
Rating Distribution

5 Star


4 Star


3 Star


2 Star


1 Star


Your Rating:

Your Name: Create a Pen Name or

Barnes & Noble.com Review Rules

Our reader reviews allow you to share your comments on titles you liked, or didn't, with others. By submitting an online review, you are representing to Barnes & Noble.com that all information contained in your review is original and accurate in all respects, and that the submission of such content by you and the posting of such content by Barnes & Noble.com does not and will not violate the rights of any third party. Please follow the rules below to help ensure that your review can be posted.

Reviews by Our Customers Under the Age of 13

We highly value and respect everyone's opinion concerning the titles we offer. However, we cannot allow persons under the age of 13 to have accounts at BN.com or to post customer reviews. Please see our Terms of Use for more details.

What to exclude from your review:

Please do not write about reviews, commentary, or information posted on the product page. If you see any errors in the information on the product page, please send us an email.

Reviews should not contain any of the following:

  • - HTML tags, profanity, obscenities, vulgarities, or comments that defame anyone
  • - Time-sensitive information such as tour dates, signings, lectures, etc.
  • - Single-word reviews. Other people will read your review to discover why you liked or didn't like the title. Be descriptive.
  • - Comments focusing on the author or that may ruin the ending for others
  • - Phone numbers, addresses, URLs
  • - Pricing and availability information or alternative ordering information
  • - Advertisements or commercial solicitation


  • - By submitting a review, you grant to Barnes & Noble.com and its sublicensees the royalty-free, perpetual, irrevocable right and license to use the review in accordance with the Barnes & Noble.com Terms of Use.
  • - Barnes & Noble.com reserves the right not to post any review -- particularly those that do not follow the terms and conditions of these Rules. Barnes & Noble.com also reserves the right to remove any review at any time without notice.
  • - See Terms of Use for other conditions and disclaimers.
Search for Products You'd Like to Recommend

Recommend other products that relate to your review. Just search for them below and share!

Create a Pen Name

Your Pen Name is your unique identity on BN.com. It will appear on the reviews you write and other website activities. Your Pen Name cannot be edited, changed or deleted once submitted.

Your Pen Name can be any combination of alphanumeric characters (plus - and _), and must be at least two characters long.

Continue Anonymously

    If you find inappropriate content, please report it to Barnes & Noble
    Why is this product inappropriate?
    Comments (optional)