Stories
Slash Boxes
Comments

News for nerds, stuff that matters

Slashdot Log In

Log In

Create Account  |  Retrieve Password

Practical Rails Projects

Posted by samzenpus on Wed May 21, 2008 02:08 PM
from the read-all-about-it dept.
Sean Cribbs writes "There are many beginning and advanced Ruby on Rails books available, from the authoritative Agile Web Development with Rails to the cookbook-style Rails Recipes. However, healthy guidance for intermediate-level developers is lacking at best. Ironically, this is the most crucial stage in the process of becoming proficient with Rails because one must begin to learn why, not just how. Eldon Alameda's Practical Rails Projects effectively fills that gap. I know Alameda from our local Ruby User Group and spoke with him frequently while he wrote this book. His expertise with Rails definitely shines through in the hefty 621-page volume." Keep reading for the rest of Sean's review.
Practical Rails Projects has a unique and effective approach. Instead of spoon-feeding contrived code snippets, Alameda teaches by example, leading the reader step-by-step through the design, creation, enhancement, and analysis of several full-fledged projects. Each project introduces new techniques to the intermediate Rails developer carefully and with plenty of explanation — from caching to generating graphs to RESTful application design and much more. Rather than regurgitating documentation that is occasionally unclear or misleading, each application begins with a clean Rails project and is built up step-by-step with detailed commentary on how and why each step is taken. Alameda's format reflects the reality that real-life projects never have a straight development path; at each step one must make tough decisions, watch for pitfalls and take risks. There are no leaps-of-faith or "just trust me" moments, everything is explained. In the final chapter of each project, Alameda also suggests ways that the project could be improved and how to apply the newly learned techniques to previous projects in the book.

The text is clear and uncomplicated with an approachable style. Projects even makes Rails' least fun framework, ActionWebService (which helps you create SOAP and XML-RPC services), easy to understand. While there are some glaring proofing mistakes, such as "Ruby" uncapitalized and some malformed URLs to external resources, the code snippets are practically error-free and all source and binary resources are available via the Apress website.

One controversial decision made by Alameda was to use the ExtJS Javascript library extensively in one project to build an administration interface for a legacy site. ExtJS is a powerful high-level library that simplifies the creation of desktop-like interfaces in the web browser. Instead of spending a lot of time hand-crafting HTML/ERb templates and CSS, Alameda quickly creates an interface in ExtJS and uses Rails to generate XML and JSON that drives the almost entirely client-side application. While some may find this outside the spectrum of what should be in a Rails book, many developers are now creating their interfaces in Flex, SilverLight, and other client-side technologies. With the recent official release of ActiveResource, I believe we will see more web-service-focused Rails applications as time goes on. Alameda's choice is also practical; with a small number of users having access to the interface, he can place greater requirements on them in order to deliver the application more quickly.

Overall, I believe Practical Rails Projects is a strong book for the intermediate Rails developer. It provides an introduction to more advanced concepts of the framework without being preachy or obtuse. It lacks any discussion of test- or behavior-driven development with Rails, but the breadth and depth of the topics it covers makes up for this weakness. Like any book that covers a rapidly-changing open-source project like Ruby on Rails, Projects will date quickly, but in the near-term it should be of great help to developers looking to gain constructive experience.

You can purchase Practical Rails Projects from amazon.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.
+ -
story

Related Stories

[+] Developers: Microsoft Linking Silverlight, Ruby on Rails 232 comments
CWmike writes "Friday Microsoft will demonstrate integration between its new Silverlight browser plug-in and Ruby on Rails. Microsoft's John Lam, a program manager in the dynamic language runtime team, said in a recent blog item: 'Running Rails shows that we are serious when we say that we are going to create a Ruby that runs real Ruby programs. And there isn't a more real Ruby program than Rails.' Also at the event, Microsoft officials will demonstrate IronRuby, a version of the Ruby programming language for Microsoft's .Net platform, running a Ruby on Rails application."
This discussion has been archived. No new comments can be posted.
The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
 Full
 Abbreviated
 Hidden
More
Loading... please wait.
  • Bad scaling/'right for the right job' flames in: 3.. 2.. 1..
  • 621 pages? (Score:2, Funny)

    by Anonymous Coward
    Does it come with its own set of rails and a freight train to transport the book around?
  • - constructing railroad tracks
    - fencing material
    - structural support for a building
  • and all I got was a pinkslip
  • Objective? (Score:5, Insightful)

    by Harold Halloway (1047486) on Wednesday May 21 2008, @02:44PM (#23496630)
    "I know Alameda from our local Ruby User Group and spoke with him frequently while he wrote this book."

    I would be a bit worried that this review might not totally objective or unbiased.
    • Re: (Score:3, Funny)

      Is there somewhere where it promises to be objective and unbiased, or is there some text disclosing the reviewer's connection to the author?

      Upon seeing the headline "Mother loves, praises Child", Harold interjected "How do we know we can trust her opinion?"
    • Re: (Score:3, Informative)

      Dude, he only gave him an 8/10!
    • Re:Objective? (Score:5, Informative)

      by Sean Cribbs (927082) on Wednesday May 21 2008, @03:13PM (#23497012) Homepage
      I did my best to review the book honestly. All I can give you is my word.
      • I'm sorry, what? Of course there's an objective view.

        I agree with you re: the biasing tendencies/constraints inherently present in human physiology, as well human (group) psychology.

        But of _course_ there's an objective viewpoint.
        It's the viewpoint which accurately reflects all things which can be accurately measured.
        Most things which seem to be subjectively reported are mainly so because no metric exists or is being used which can measure the objectivity.

        Math, most glaring of all, is objective. No one can h
  • Already out of date? (Score:5, Informative)

    by khendron (225184) on Wednesday May 21 2008, @02:55PM (#23496786) Homepage
    This book was published in October, 2007, and Rails 2.0 was released December, 2007. According to the description on Amazon, only the last example deals with 2.0 at all.

    Since there were some rather significant changes introduced in Rails 2.0, it is likely that many of the examples will no longer work as described. I know that is the case with current version Agile Web Development with Rails.
    • Re: (Score:3, Informative)

      Such is the pace of a popular framework like Rails. I submitted this review to /. over 2 months ago, and yet another release of Rails is imminent. A paper-based publishing process just can't keep up.
      • A paper-based publishing process just can't keep up.
        In that case one might argue the sense in reading said publishings.
    • by Sam Ruby (8995) on Wednesday May 21 2008, @03:52PM (#23497478) Homepage

      it is likely that many of the examples will no longer work as described. I know that is the case with current version Agile Web Development with Rails.
      I guess that would depend on your definition of current. There is a new version in beta [pragprog.com] that has already been largely updated, and continues to actively follow Rails development.

      Disclaimer: with this edition, I was recruited to be one of the authors of this book.
    • I was thinking the same thing, in particular ActionWebService has been replaced by ActiveResource, and much of the controller/routing code seems to cater to REST URLs.
  • by ClientNine (1261974) on Wednesday May 21 2008, @03:07PM (#23496946)
    I've found that Rails documentation falls into two categorys: (1) The annoyingly pedantic tutorial which falls apart if anything whatsoever goes wrong on your system, since the tutorial lacks any depth; and (2) Advanced docs that are moderately impenetrable to people not already very familiar with the relevant technologies.

    I'm an experienced Perl and C guy who just wants to find a better way than CGI::Ajax to build slick web applications, but I found that I spent more time being annoyed with the documentation than actually learning. Intermediate indeed; Rails needs this.
    • Re: (Score:3, Interesting)

      The documentation is fine. There are just no good code examples out there for people to learn from. That is what Rails needs.
        • If I want to learn how to do something, I want to see code not read about it. I know one issue that stumps a lot of people is how to handle multiple models with one form. The best way to show how to properly handle that situation is to have a sample application in front of you that implements multiple models with one form.

          However, these code examples do not belong in the documentation. The documentation is where I go to figure out what I should expect when I pass a certain attribute to a method. Learning ho
  • Another practical Rails book that I can recommend is RailsSpace [railsspace.com].
    Shameless plug: my latest Rails project [howflow.com]. To give you an idea how powerful Rails is, HowFlow has been developed in exaclty five days from scratch. It is currently in private beta, but I'm handing out invitations for those who send an email to flow at howflow.com.
    • I will second RailsSpace.

      I tried learning rails from Agile Web Development with Rails first, and I found that AWDwR has a huge deficiency: it frequently fails to explain the fundamental Ruby concepts and structures that it's using. (For example, I remember typing in the :symbol syntax for several chapters without having any idea what it actually was.).

      RailsSpace, OTOH, does a really good job of stopping to explain each new concept, tool, or syntax in a sidebar; as a coder who didn't already know Ruby I fou
      • > it frequently fails to explain the fundamental
        > Ruby concepts and structures that it's using.

        David Black's Ruby For Rails [manning.com] is a great book for this; David explains the way Rails leverages all sorts of Ruby techniques to do what it does. Another good one is Advanced Rails [oreilly.com], which has an excellent section on the changes that Rails makes to various Ruby core classes - e.g., Symbol.to_proc.
  • by Anonymous Coward
    The Art of Rails [amazon.com] covers intermediate Rails topics quite nicely, and just came out so it had the chance to cover some of the Rails 2.0 developments (particularly related to nested routes and REST services). I've been reading through a copy and have found it really helpful so far -- especially the three chapters on advanced Ruby development patterns.
  • Anyone else read the title wondering why "gun" was left out?

    My second thought was, why is /. covering trains?

    THEN I remembered that Ruby decided to name their framework with that term...

    tm

  • You can buy this book for cheap in electronic format. Newegg has them [newegg.com], 100 copies on DVD for 24.99. and free three day shipping.

    I keed, I keed. Relax! Hey you, RoR fans with the mod points! Put those back down!

  • After playing around with ruby on rails, I just didn't find that it was all that useful. Mostly I found it was just a painful exercise in learning exotic ways of doing things that I already knew how to do correctly. SQL, for example. Don't get me wrong, I see some merit in the rails way of doing things, but overall rails just seems like two steps back for anyone savvy enough to comprehend ruby in the first place.
    Ruby, on the other hand, rocks out loud.
    • Convention over configuration and ActiveRecord are hardly exotic. I must admit I loved it when I discovered the Dynamic finders.
    • I did not "get" Rails at first either. But now that I am familiar with it, I can do things in moments that it used to take half a day programming to do.

      True, there is strong incentive to "go with the flow", and learn the "Rails Way" to do things... but most of the time that actually helps rather than hinders.

    • I bounced back and forth like this for a while. I'm a 10 year Java vet, it's served me well in that the Java+Linux server programing duopoly has allowed me to live in some cool place, and allowed my family a great lifestyle.

      I remember facing the same question back when, "should I keep forging ahead with PHP or give this Java thing a try". Looking back, thank god I gave Java a fair shake. Even though my first major project could of been done probably a lot easier in PHP, it was worth it's time in gold, bi
    • ActiveRecord doesn't do SQL "correctly" for very good reasons. If you have a reason why you need to use SQL like it was designed, you probably shouldn't be using ActiveRecord at all. However, that does not preclude you from using the rest of the Rails framework.
    • I've heard the same (.NET has Microsoft, J2EE has Sun). I was hoping it would be Apple for rails, since they were shipping it with their new OS, but that didn't seem to happen.
    • I am no longer a Ruby on Rails fan as I have found more and more people complain about scalability.

      Which is silly because Rails scales exactly the same way every shared nothing web architecture does. If you're application won't scale in Rails, it won't scale if you rewrote it in PHP, or even C for that matter.
      • Scalability is not so much an issue. Finding people who know how to scale properly is.

        Most of the people complaining about scalability are complaining because it does NOT (contrary to what the other poster wrote) scale the same way others do. It takes some learning to know how to scale Rails applications properly. If you try to do it the same way you scale applications running under Apache, for example, you probably won't get very far.

        In part that is because Rails is (still but maybe not for long) sin
        • If you try to do it the same way you scale applications running under Apache, for example, you probably won't get very far.

          I disagree. Sure, the configuration may be different, but ultimately, in simplistic terms, no matter what your framework/language you just keep adding processes and servers until you've met your load requirements. There is nothing in Rails that forces you to keep your application on a single server, for example.
          • You don't know what you are talking about. Rails is not thread-safe. If you want to run multiple instances of Rails, you had BETTER run them in different processes, or you are going to blow yourself up. Which means: EVERY instance of Rails must run under its own web (not physical) server. If you are doing it differently, you are fucking up.

            Now, allowing for the possibility that you meant something other than what I thought, I will state that Apache works best with multiple-threading applications. You can
    • Re: (Score:3, Interesting)

      > I am no longer a Ruby on Rails fan as I have found
      > more and more people complain about scalability.

      Remember, languages (and frameworks) don't scale, architectures do.

      > There have been numerous companies that have abandoned ship.

      From where I stand there are lots of companies getting onboard, and modrails [modrails.com] is a sea change (for the better!) in the Rails deployment story.
      • I would want to see some solid numbers before I bought into the mod_rails thing. Sure, it might let Rails applications use less memory, but you have to be running Apache, which is relatively large in itself.

        Also, historically, Rails apps running under Apache have not been very fast or efficient.

        So this is one to which I say, "I'll believe it when I see it, not before."
        • > So this is one to which I say, "I'll believe it when I see it, not before."

          Yup, that's fair enough. But I hope that I've opened port ranges and set up init scripts and monit.conf files and mongrel_cluster.yml and proxy_balancer settings for the last time. No more need to worry about a dozen people doing slow file uploads and locking all the Mongrel processes... all those pieces of the puzzle just go away. Good times.
    • No, what you saw was almost certainly model validation, which is pure Ruby and built into Rails. There is no ajax involved at all, even though it may look that way.