Book Review: Ruby on Rails Enterprise Application Development

book sleeve of Ruby on Rails Enterprise Application Development It’s very clear from posts on the rails email list that there’s space for books that take the novice developer beyond what they learn in beginners’ books like Agile Web Development With Ruby on Rails. Those books will help you build your first app and get a sense of the structure of Rails but before long you’ll want to write code that needs to be reusable between models, or across projects, or to interface with services other than databases. The beginners’ books, by definition, don’t deal with intermediate topics. That’s the niche Ruby on Rails Enterprise Application Development sets out to fill, but sadly it doesn’t offer much beyond those beginners’ guides.

Based on the title, I had expected going in that the book would be mostly focussed on cross-systems integration such as the use of LDAP, web services (particularly SOAP), connecting to multiple and/or legacy databases and other topics often lumped together as “enterprisey” which push at the rails conventions or require them to be abandoned. In fact the book would be better titled along the lines of “Up and running on Ruby on Rails in a small business” as the application developed through the course of its chapters is very simple and doesn’t demonstrate much about Rails itself that couldn’t be gleaned from AWDwRoR or one of its competitors.

Where some may find this book most useful is in the attention paid to windows-based development and to deployment (where it focusses on unix-based systems). Most of the books currently on the market do touch on using windows, but the authors of this one clearly use it themselves and actually advocate the use of an IDE for windows development. If your tastes run to Eclipse on Windows, that may draw you to this.

Though the book references Rails 1.2.3, the application built inside could just as easily have been built on Rails 1.1. The app is CRUD-based, but there is no mention of REST or map.resources, despite the fact that they could have simplified it. Authors don’t have to buy into the prevailing wisdom in the rails community, but it’s a shame when strategies that can simplify apps aren’t covered.

Perhaps more worrying given that Rails 2.0 is now out the door and will be the default for anyone starting out with this book now is the use of deprecated techniques such as dynamic scaffolds (the scaffold keyword was removed 10 months ago in changeset 6306) and old-style pagination (which left in changeset 6992 back in June)

There certainly aren’t as many books out there for newcomers to Rails as there are for some other languages/frameworks, so its inevitable that more are to come. It’s a shame that already at least two such books have been pitched at intermediate developers rather than their more correct audience, and hopefully that trend won’t continue. It would also be very helpful if packt would publish an addendum to this volume detailing the aspects that no longer work in Rails 2.0. Missing some great new feature in Edge Rails is one thing, but it’s quite another to rely on features that were scheduled for removal over six months before a book goes to press.

Disclaimer: I was sent a copy of this book for review by the publisher. You can find it at packt, amazon US, amazon UK and all sorts of other places.

Tags: , , , ,

2 comments

  1. Dear James,

    Thanks for taking the time to review the book (which I co-authored). I agree with all your points, but I thought I might explain why those things happened.

    Firstly, as you’re well aware, Rails is a constantly shifting target. Given I was writing the book in my spare time, and given we had a deadline, we took a decision to stick with Rails 1.2.3 as the version covered. Trying to keep pace with everything in Rails was proving impossible: as it was, tracking the changes which had an immediate impact (and which I and the technical reviewer noticed) was proving very tough. Ideally, I would update everything to the latest Rails, but time and space prevented this for this edition.

    Another issue with tracking Edge Rails is I was never sure which features were going to stay in or be ousted. This made it difficult to decide whether to go for RESTful routing or not: I was aware of it, but when the book was in progress it was still in flux. We decided to stick with stuff we knew would be likely to work, without getting into the whole REST thing.

    I agree that the word “Enterprise” in the title sets up the wrong expectations. The title wasn’t my choice: I would have preferred “Rails in Context”, as I think this is where the book is strongest: contextualising Rails in a realistic environment.

    Finally, I think our timing was a little unfortunate. The book was due for publication at the start of September originally, but the editing process took longer than expected, and delays meant we published 2 months later. This then meant the book came out very close to the release of Rails 2, and almost immediately went out of date. That’s a bit of a shame, and disappointing for me.

    Anyway, thanks again for your review. I’ve learned a lot from writing the book, and think I could do a better job next time round, now I’m more aware of the issues. Hopefully, the book as it stands still has enough material to be useful.

    Cheers.

  2. Thanks for the comment Elliott. It’s sad that the book was so delayed and you weren’t given more say in the title and pitching.

    The REST/resources stuff had been around for quite a while and had such widespread support (and so much enthusiasm from the core team) that I don’t think there was any doubt that it would stick around, albeit in refined form, but I definitely don’t envy authors trying to track Edge while working on their manuscripts.