
Ruby on Rails offers the ability to rapidly design and write high-quality code with elegance and maintainability. Written by an experienced web application developer, this book explains how to take good Rails code and turn it into beautiful Rails code: simple, effective, reusable, evolvable code. He discusses the very latest in design patterns, programming abstractions, and development methodologies that have emerged for the modern web. With each design technique, you?ll discover how to make your own additions to Rails and craft a development environment tailored to your specific needs.
1) Metaprogramming Ruby.
2) The Art of Rails.
3) Ruby Design Patterns
4) Services-Oriented Architecture in Ruby
These stick out for me. Even if the last one in the list felt a little "rushed to production", it still covered important topics you won't find anywhere else. Plus I find when a book has typos (either in the text or in the code), that just makes me engage with it a little bit more.
* Recommended Ruby Books (http://antoniocangiano.com/ruby-and-rails-recommended-books/)
I have not updated the Rails page yet, but you should be fine with:
* Agile Web Development with Rails, Third Edition (http://www.pragprog.com/titles/rails3/agile-web-development-...)
Other books you may want to consider afterward are:
* The Art of Rails (http://www.amazon.com/Art-Rails-Programmer/dp/0470189487)
* Enterprise Rails (http://oreilly.com/catalog/9780596515201/).
As a first step I recommend reading books, start coding, participating in simple open source projects/gems on github. Get the RoR style.
Then get on the flow by reading RubyFlow, try other things than Rails like Sinatra, ruby screen scraping etc etc. Get the RoR/Ruby perspective.
I highly recommend community-powered resources for all of these:
- Rubyflow, PlanetRubyOnRails : the everyday news, announcements - Apidock : ruby, rails, rspec guides - Rails Guides : up-to-date Rails doc in a readable format - Ruby Toolbox, RubyTrends : all about the ecosystem in real-time. You'll learn here what modules to use/digg in, how to extend your sources of information.
Personally I would recommend two books: Design Patterns in Ruby by Russ Olsen and The Art of Rails by Edward Benson
Design Patterns in Ruby (Addison-Wesley Professional Ruby… by Russ Olsen
The Art of Rails (Programmer to Programmer) by Edward Benson
This book is different for a few important reasons:
First off, it speaks to issues of design rather than issues of API. That has important ramifications in the way the material is covered. Agile Web Development with Rails (Pragmatic) and The Rails Way (Addison) are two fantastic books, and both are on the shelf next to my desk right now, but they both concentrate on exhaustive coverage of the Rails API. The Art of Rails is meant to be the kind of book you buy after owning one of those. It takes someone familiar with the /syntax/ of coding Rails and attempts to provide guidance and insight into the /style/ and design patterns of architecting an entire application with Rails.
Second, it devotes three whole chapters (8, 9, and 10) to developing with the "Ruby style". So many web developers learn Ruby because of Rails that they eventually get to a point in their Rails development skills where they stand to really benefit by taking a few steps outside of Rails to learn how Ruby is a fundamentally different language than {PHP, Java, other OO/Procedural languages}. The Art of Rails really devotes a significant effort to talking about the new and Ruby-centric design patterns that constructs like blocks, Procs, method_missing, and instance_eval make possible, and then it provides examples of how you can use these design patterns in your Rails applications.
Third, it backs up design patterns with useful, concise examples that you can actually execute, but otherwise stays clear from drowning you with example code that is better left to online format.
Finally, I wrote it to read cover-to-cover, or at least a chapter at a time, whereas a lot of tech books these days are really centered around dictionary-style reference lookup. This book should be fun to read, have you nodding your head, and leave you with some useful abstractions, coding techniques, and new tricks when you're done.
I'll stop here to prevent myself from leaving a run-on comment, but thanks for pushing back for more justification of the book