x | Preface
I would recommend the following books as a prelude to this one:
- Programming Ruby,Second Edition, by Dave Thomas (Pragmatic Bookshelf):
Known as “the Pickaxe,” this is an excellent introduction to Ruby for program-
mers, and a comprehensive reference that will serve you for years. Without a
doubt the most essential book for Rails developers, no matter what skill level. - The Ruby Programming Language, by David Flanagan and Yukihiro Matsumoto
(O’Reilly): Scheduled to be released in January 2008, this book is a comprehen-
sive introduction and reference to Ruby 1.8 as well as 1.9. It does an excellent job
of covering even the most difficult aspects of Ruby while still being accessible to
programmers learning it. - Best of Ruby Quizby James Edward Gray II (Pragmatic Bookshelf): 25 selected
quizzes from the Ruby Quiz (http://www.rubyquiz.com/); includes both the quiz-
zes and a discussion of their solutions. Solving programming puzzles and shar-
ing solutions with others is a great way to hone your Ruby skills. - Agile Web Development with Rails,Second Edition, by Dave Thomas and David
Heinemeier Hansson (Pragmatic Bookshelf): The best and most comprehensive
book for learning Ruby on Rails. The second edition covers Rails 1.2, but most
concepts are applicable to Rails 2.0. - Rails Cookbook, by Rob Orsini (O’Reilly): This contains “cookbook-style” solu-
tions to common problems in Rails, each one of which may be worth the price of
the book in time saved. Also worth reading are the similar booksRails Recipesby
Chad Fowler andAdvanced Rails Recipesby Mike Clark and Chad Fowler (Prag-
matic Bookshelf).
Many varied subjects are covered in this book; I make an effort to introduce subjects
that may be unfamiliar (such as decentralized revision control) and provide refer-
ences to external resources that may be useful. Each chapter has a “Further Read-
ing” section with references that clarify or expand on the text.
I take a bottom-up approach to the concepts in this book. The first few chapters
cover the mechanics of metaprogramming in Ruby and the internals of Rails. As the
book progresses, these concepts assimilate into larger concepts, and the last several
chapters cover the “big-picture” concepts of managing large Rails software develop-
ment projects and integrating Rails into other systems.
This book is written for Rails 2.0. At the time of this writing, Rails 2.0 has been
released as a release candidate, but not in its final form. Details are subject to change,
but the concepts and techniques discussed in this book should be valid for Rails 2.0.