After getting through Agile Development with Rails, I wasn’t quite ready to get AppDrop working on my server. I didn’t know how to use nginx, mongrel, and all the other neat deployment tools that Rails is becoming associated with. So I picked up Deploying Rails Applications to learn all about the fun stuff involved.
Let’s get the review out of the way quick: I feel very medium about this book.
The good: These technologies truly are the “pragmatic way” (“agile”, if you will) of deploying Rails.Capistrano, svn, nginx, and mongrel are all explained very well here. What they do, why they do it, how they do it, it’s all here. It’s very readable and explained very coherently. If you have had some experience with all of these before, you will find this to be an excellent reference on all these technologies and it will definitely be a keeper.
The bad: You need to know how to use these technologies before the explanation of how to use them becomes helpful. The first technology introduced is Subversion (svn), and it didn’t come easy for me. I’ve always used CVS, so I’m not new to source control (although the more complicated features escape me and I really should look into it). But sadly the problem isn’t in the technologies involved. It’s that the typesetting in the PDF is a bit “off”. Here’s an example in the spirit of what I mean:
$ svn blah blah blah
blah blah blah
file1 file2 file3
So from this I thought the red stuff was what you type in, and the blue stuff is what you get back. This is exactly how it’s done in the other Pragmatic books, and it’s very easy to follow. But in many examples in the book, the first two lines are what you type in and the third is what you get back. If I already knew svn this wouldn’t be a problem because I would immediately recognize something was off, but since I don’t, I was screwed. Part of this may be excusable, and in the errata section online many people have complained about it, so it presumably will be fixed in the next edition of the book.
Furthermore, in the opening section, conventions are set up so that it’s unambiguous as to which computer you should run these commands in (e.g., your box, the production box, etc.). But in the first section afterwards (the svn section), this is completely thrown out the window. So now I’m lost again and I don’t know where to do what because it’s totally ambiguous…hopefully this is addressed in the next edition as well.
There are also typos in some of the code, so sometimes it just won’t work. Again, if you know the tools involved, this is no problem. But…I didn’t, because the reason I bought the book was to learn about these technologies in the first place.
The verdict: Hold off until the second edition comes out. This one just doesn’t have the same feel as the other Pragmatic Programmer books and feels like a book in beta. If they work out the kinks I think it’ll be a great buy and will stand up well to the others in the series.