The Rails 3 Way

The Rails 3 Way

3.91 (268 ratings by Goodreads)
By (author) 

List price: US$41.99

Currently unavailable

Add to wishlist

AbeBooks may have this title (opens in new window).

Try AbeBooks

Description

The Rails (TM) 3 Way is a comprehensive resource that digs into the new features in Rails 3 and perhaps more importantly, the rationale behind them.
-Yehuda Katz, Rails Core

The Bible for Ruby on Rails Application Development

Ruby on Rails strips complexity from the development process, enabling professional developers to focus on what matters most: delivering business value via clean and maintainable code. The Rails (TM) 3 Way is the only comprehensive, authoritative guide to delivering production-quality code with Rails 3. Pioneering Rails expert Obie Fernandez and a team of leading experts illuminate the entire Rails 3 API, along with the idioms, design approaches, and libraries that make developing applications with Rails so powerful. Drawing on their unsurpassed experience and track record, they address the real challenges development teams face, showing how to use Rails 3 to maximize your productivity.



Using numerous detailed code examples, the author systematically covers Rails 3 key capabilities and subsystems, making this book a reference that you will turn to again and again. He presents advanced Rails programming techniques that have been proven effective in day-to-day usage on dozens of production Rails systems and offers important insights into behavior-driven development and production considerations such as scalability. Dive deep into the Rails 3 codebase and discover why Rails is designed the way it is-and how to make it do what you want it to do.




This book will help you



Learn what's new in Rails 3
Increase your productivity as a web application developer
Realize the overall joy in programming with Rails
Leverage Rails' powerful capabilities for building REST-compliant APIs
Drive implementation and protect long-term maintainability using RSpec
Design and manipulate your domain layer using Active Record
Understand and program complex program flows using Action Controller
Master sophisticated URL routing concepts
Use Ajax techniques via Rails 3 support for unobtrusive JavaScript
Learn to extend Rails with popular gems and plugins, and how to write your own
Extend Rails with the best third-party plug-ins and write your own
Integrate email services into your applications with Action Mailer
Improve application responsiveness with background processing
Create your own non-Active Record domain classes using Active Model
Master Rails' utility classes and extensions in Active Support
show more

Product details

  • Paperback | 768 pages
  • 179 x 229 x 39mm | 1,150g
  • Addison-Wesley Educational Publishers Inc
  • New Jersey, United States
  • English
  • 2nd edition
  • 0321601661
  • 9780321601667
  • 252,928

Back cover copy

The Ruby on Rails Application Development Bible " " Ruby on Rails strips complexity from the development process, enabling professional developers to focus on what matters most: delivering business value via clean and maintainable code. This book is the only comprehensive, authoritative guide to delivering production-quality code with Rails 3. Pioneering Rails expert Obie Fernandez and a team of leading experts illuminate the entire Rails 3 API, along with the idioms, design approaches, and libraries that make developing applications with Rails so powerful. Drawing on their unsurpassed experience and track record, they address the real challenges development teams face, showing how to use Rails 3 to maximize your productivity.
Using plentiful detailed code examples, Obie systematically covers Rails 3 key capabilities and subsystems, making this book a reference that you will refer to again and again. He presents advanced Rails programming techniques that have been proven effective in day-to-day usage on dozens of production Rails systems and offers important insights into behavior-driven development and production considerations such as scalability. Dive deep into the Rails 3 codebase together, discovering why Rails is designed the way it is- and how to make it do what you want it to do.
This book will help you Learn what's new in Rails 3 Increase your productivity as a web application developer Realize the overall joy in programming with Rails Leverage Rails' powerful capabilities for building REST-compliant APIs Drive implementation and protect long-term maintainability using RSpec Design and manipulate your domain layer using Active Record Understand and program complex program flows using Action Controller Master sophisticated URL routing concepts Use Ajax techniques via Rails 3 support for unobtrusive JavaScript Incorporate logins and authentication into your application Extend Rails with the best third-party plug-ins and write your own Integrate email services into your applications with ActionMailer Choose the right Rails production configuration Streamline deployment with Capistrano Improve application responsiveness with background processing Create your own non-Active Record domain classes using Active Model Master Rails' utility classes and extensions in Active Support
show more

Table of contents

Foreword by David Heinemeier Hansson xxxiii Foreword by Yehuda Katz xxxv

Introduction xxxvii

Acknowledgments xliii

About the Author xlv







Chapter 1: Rails Environments and Configuration 1

1.1 Bundler 2

1.2 Startup and Application Settings 8

1.3 Development Mode 15

1.4 Test Mode 19

1.5 Production Mode 20

1.6 Logging 23

1.7 Conclusion 29



Chapter 2: Routing 31

2.1 The Two Purposes of Routing 32

2.2 The routes.rb File 33

2.3 Route Globbing 45

2.4 Named Routes 46

2.5 Scoping Routing Rules 50

2.6 Listing Routes 53

2.7 Conclusion 54



Chapter 3: REST, Resources, and Rails 55

3.1 REST in a Rather Small Nutshell 55

3.2 Resources and Representations 56

3.3 REST in Rails 57

3.4 Routing and CRUD 58

3.5 The Standard RESTful Controller Actions 61

3.6 Singular Resource Routes 64

3.7 Nested Resources 65

3.8 RESTful Route Customizations 69

3.9 Controller-Only Resources 74

3.10 Different Representations of Resources 76

3.11 The RESTful Rails Action Set 78

3.12 Conclusion 83



Chapter 4: Working with Controllers 85

4.1 Rack 86

4.2 Action Dispatch: Where It All Begins 88

4.3 Render unto View 92

4.4 Additional Layout Options 101

4.5 Redirecting 101

4.6 Controller/View Communication 104

4.7 Filters 105

4.8 Verification 111

4.9 Streaming 112

4.10 Conclusion 117



Chapter 5: Working with Active Record 119

5.1 The Basics 120

5.2 Macro-Style Methods 121

5.3 Defining Attributes 123

5.4 CRUD: Creating, Reading, Updating, Deleting 127

5.5 Database Locking 142

5.6 Where Clauses 146

5.7 Connections to Multiple Databases in Different Models 153

5.8 Using the Database Connection Directly 154

5.9 Other Configuration Options 158

5.10 Conclusion 159



Chapter 6: Active Record Migrations 161

6.1 Creating Migrations 161

6.2 Data Migration 173

6.3 schema.rb 174

6.4 Database Seeding 175

6.5 Database-Related Rake Tasks 176

6.6 Conclusion 179



Chapter 7: Active Record Associations 181

7.1 The Association Hierarchy 181

7.2 One-to-Many Relationships 183

7.3 The belongs-to Association 191

7.4 The has-many Association 200

7.5 Many-to-Many Relationships 209

7.6 One-to-One Relationships 223

7.7 Working with Unsaved Objects and Associations 226

7.8 Association Extensions 227

7.9 The AssociationProxy Class 229

7.10 Conclusion 230



Chapter 8: Validations 231

8.1 Finding Errors 231

8.2 The Simple Declarative Validations 232

8.3 Common Validation Options 242

8.4 Conditional Validation 243

8.5 Short-form Validation 245

8.6 Custom Validation Techniques 246

8.7 Skipping Validations 249

8.8 Working with the Errors Hash 249

8.9 Testing Validations with Shoulda 250

8.10 Conclusion 250



Chapter 9: Advanced Active Record 251

9.1 Scopes 251

9.2 Callbacks 256

9.3 Calculation Methods 265

9.4 Observers 268

9.5 Single-Table Inheritance (STI) 269

9.6 Abstract Base Model Classes 276

9.7 Polymorphic has many Relationships 277

9.8 Foreign-key Constraints 281

9.9 Using Value Objects 281

9.10 Modules for Reusing Common Behavior 285

9.11 Modifying Active Record Classes at Runtime 289

9.12 Conclusion 292



Chapter 10: Action View 293

10.1 Layouts and Templates 294

10.2 Partials 302

10.3 Conclusion 308



Chapter 11: All About Helpers 309

11.1 ActiveModelHelper 309

11.2 AssetTagHelper 316

11.3 AtomFeedHelper 324

11.4 CacheHelper 326

11.5 CaptureHelper 326

11.6 DateHelper 328

11.7 DebugHelper 333

11.8 FormHelper 333

11.9 FormOptionsHelper 350

11.10 FormTagHelper 355

11.11 JavaScriptHelper 358

11.12 NumberHelper 359

11.13 PrototypeHelper 361

11.14 RawOutputHelper 361

11.15 RecordIdentificationHelper 362

11.16 RecordTagHelper 363

11.17 SanitizeHelper 364

11.18 TagHelper 366

11.19 TextHelper 367

11.20 TranslationHelper and the I18n API 372

11.21 UrlHelper 391

11.22 Writing Your Own View Helpers 398

11.23 Wrapping and Generalizing Partials 401

11.24 Conclusion 407



Chapter 12: Ajax on Rails 409

12.1 Unobtrusive JavaScript 411

12.3 Ajax and JSON 419

12.3.1 Ajax link to 419

12.4 Ajax and HTML 421

12.5 Ajax and JavaScript 423

12.6 Conclusion 424



Chapter 13: Session Management 425

13.1 What to Store in the Session 426

13.2 Session Options 427

13.3 Storage Mechanisms 427

13.4 Cookies 431

13.5 Conclusion 432



Chapter 14: Authentication 433

14.1 Authlogic 434

14.2 Devise 439

14.3 Conclusion 443



Chapter 15: XML and Active Resource 445

15.1 The to-xml Method 445

15.2 The XML Builder 454

15.3 Parsing XML 456

15.4 Active Resource 457

15.5 Active Resource Authentication 465

15.6 Conclusion 469



Chapter 16: Action Mailer 471

16.1 Setup 471

16.2 Mailer Models 472

16.3 Receiving Emails 477

16.4 Server Configuration 479

16.5 Testing Email Content 479

16.6 Conclusion 481



Chapter 17: Caching and Performance 483

17.1 View Caching 483

17.2 General Caching 495

17.3 Control Web Caching 497

17.4 ETags 498

17.5 Conclusion 500



Chapter 18: RSpec 501

18.1 Introduction 501

18.2 Basic Syntax and API 504

18.3 Predicate Matchers 513

18.4 Custom Expectation Matchers 514

18.5 Shared Behaviors 517

18.6 RSpec's Mocks and Stubs 517

18.7 Running Specs 520

18.8 RSpec Rails Gem 521

18.9 RSpec Tools 531

18.10 Conclusion 533



Chapter 19: Extending Rails with Plugins 535

19.1 The Plugin System 536

19.2 Writing Your Own Plugins 537

19.3 Conclusion 547



Chapter 20: Background Processing 549

20.1 Delayed Job 550

20.2 Resque 553

20.3 Rails Runner 557

20.4 Conclusion 559



Appendix A: Active Model API Reference 561

A.1 Attribute Methods 561

A.2 Callbacks 563

A.3 Conversion 563

A.4 Dirty 564

A.5 Errors 565

A.6 Lint::Tests 567

A.7 MassAssignmentSecurity 567

A.8 Name 568

A.9 Naming 569

A.10 Observer 569

A.11 Observing 570

A.12 Serialization 571

A.13 Serializers::JSON 572

A.14 Serializers::Xml 572

A.15 Translation 573

A.16 Validations 574

A.17 Validator 578



Appendix B: Active Support API Reference 579

B.1 Array 579

B.2 ActiveSupport::BacktraceCleaner 585

B.3 ActiveSupport::Base64 586

B.4 ActiveSupport::BasicObject 586

B.5 ActiveSupport::Benchmarkable 587

B.6 BigDecimal 588

B.7 ActiveSupport::BufferedLogger 588

B.8 ActiveSupport::Cache::Store 590

B.9 ActiveSupport::Callbacks 595

B.10 Class 598

B.11 ActiveSupport::Concern 602

B.12 ActiveSupport::Configurable 603

B.13 Date 603

B.14 DateTime 609

B.15 ActiveSupport::Dependencies 613

B.16 ActiveSupport::Deprecation 617

B.17 ActiveSupport::Duration 617

B.18 Enumerable 619

B.19 ERB::Util 620

B.20 FalseClass 621

B.21 File 621

B.22 Float 622

B.23 Hash 622

B.24 HashWithIndifferentAccess 627

B.25 ActiveSupport::Inflector::Inflections 628

B.26 Integer 632

B.27 ActiveSupport::JSON 633

B.28 Kernel 634

B.29 Logger 635

B.30 ActiveSupport::MessageEncryptor 636

B.31 ActiveSupport::MessageVerifier 637

B.32 Module 638

B.33 ActiveSupport::Multibyte::Chars 645

B.34 NilClass 648

B.35 ActiveSupport::Notifications 649

B.36 Numeric 650

B.37 Object 653

B.38 ActiveSupport::OrderedHash 657

B.39 ActiveSupport::OrderedOptions 657

B.40 ActiveSupport::Railtie 658

B.41 Range 658

B.42 Regexp 660

B.43 ActiveSupport::Rescuable 660

B.44 ActiveSupport::SecureRandom 661

B.45 String 662

B.46 ActiveSupport::StringInquirer 671

B.47 Symbol 671

B.48 ActiveSupport::Testing::Assertions 671

B.49 Time 673

B.50 ActiveSupport::TimeWithZone 680

B.51 ActiveSupport::TimeZone 681

B.52 ActiveSupport::TrueClass 684

B.53 ActiveSupport::XmlMini 684





Index 687

Method Index 697
show more

Review quote

Praise for the Previous Edition

This encyclopedic book is not only a definitive Rails reference, but an indispensable guide to Software-as-a-Service coding techniques for serious craftspersons. I keep a copy in the lab, a copy at home, and a copy on each of my three e-book readers, and it's on the short list of essential resources for my undergraduate software engineering course.

-Armando Fox, adjunct associate professor, University of California, Berkeley



Everyone interested in Rails, at some point, has to follow The Rails Way.

-Fabio Cevasco, senior technical writer, Siemens AG, and blogger at H3RALD.com



I can positively say that it's the single best Rails book ever published to date. By a long shot.

-Antonio Cangiano, software engineer and technical evangelist at IBM



This book is a great crash course in Ruby on Rails! It doesn't just document the features of Rails, it filters everything through the lens of an experienced Rails developer-so you come our a pro on the other side.

-Dirk Elmendorf, co-founder of Rackspace, and Rails developer since 2005



The key to The Rails Way is in the title. It literally covers the "way" to do almost everything with Rails. Writing a truly exhaustive reference to the most popular Web application framework used by thousands of developers is no mean feat. A thankful community of developers that has struggled to rely on scant documentation will embrace The Rails Way with open arms. A tour de force!

-Peter Cooper, editor, Ruby Inside



In the past year, dozens of Rails books have been rushed to publication. A handful are good. Most regurgitate rudimentary information easily found on the Web. Only this book provides both the broad and deep technicalities of Rails. Nascent and expert developers, I recommend you follow The Rails Way.

-Martin Streicher, chief technology officer, McLatchy Interactive; former editor-in-chief of Linux Magazine



Hal Fulton's The RubyWay has always been by my side as a reference while programming Ruby. Many times I had wished there was a book that had the same depth and attention to detail, only focused on the Rails framework. That book is now here and hasn't left my desk for the past month.

-Nate Klaiber, Ruby programmer



As noted in my contribution to the Afterword: "What Is the Rails Way (To You)?," I knew soon after becoming involved with Rails that I had found something great. Now, with Obie's book, I have been able to step into Ruby on Rails development coming from .NET and be productive right away. The applications I have created I believe to be a much better quality due to the techniques I learned using Obie's knowledge.

-Robert Bazinet, InfoQ.com, .NET and Ruby community editor, and founding member of the Hartford, CT, Ruby Brigade



Extremely well written; it's a resource that every Rails programmer should have. Yes, it's that good.

-Reuven Lerner, Linux Journal columnist
show more

About Obie Fernandez

Obie Fernandez has been hacking computers since he got his first Commodore VIC-20 in the eighties, and found himself in the right place and time as a programmer on some of the first Java enterprise projects of the mid-nineties. Obie has been evangelizing Ruby on Rails online via blog posts and publications since early 2005. He has traveled around the world relentlessly promoting Rails at large industry conferences. As CEO and Founder of Hashrocket, Obie specializes in orchestrating the creation of large-scale, web-based applications, both for startups and mission-critical enterprise projects. He still gets his hands dirty with code on at least a weekly basis and posts regularly on various topics to his popular technology blog.
show more

Rating details

268 ratings
3.91 out of 5 stars
5 25% (68)
4 46% (123)
3 25% (66)
2 3% (9)
1 1% (2)
Book ratings by Goodreads
Goodreads is the world's largest site for readers with over 50 million reviews. We're featuring millions of their reader ratings on our book pages to help you find your new favourite book. Close X