EnterpriseRuby.gif

I enjoyed the writing style, which is clear with frequent and interesting examples, and often humorous. For the most part, the book uses a single example all the way through, although the author does not hesitate to create ad hoc examples when the material would not fit the overall example. The single example is loosely coupled, and it's specifics can easily be used independently.

The Intro states that you should not have to know much Ruby, and then states that not knowing much Ruby is having worked your way through the entire Pick Axe book. I think that is a mistake, as this is not a book for beginners. This was one of the very few things that I did not like. The hype surrounding Ruby on Rails is in evidence only in the fact that whenever you need a user interface, the advice seems to be "Use Rails", although the book teaches nothing about Rails.

The book basically consists of five sections: Databases, XML, Low level networking, High level networking, and Tools and Techniques. The first section, databases, covers integrating Ruby with MySQL and Oracle, and has pointers to websites should you need another db. It also covers Object-Relational Mappers, specifically ActiveRecord, which is Ruby's ORM of choice and is used in Rails. CSV is briefly covered here, and LDAP is covered well, including a ten page refresher on LDAP in general.

The book basically consists of five sections: Databases, XML, Low level networking, High level networking, and Tools and Techniques. The first section, databases, covers integrating Ruby with MySQL and Oracle, and has pointers to websites should you need another db. It also covers Object-Relational Mappers, specifically ActiveRecord, which is Ruby's ORM of choice and is used in Rails. CSV is briefly covered here, and LDAP is covered well, including a ten page refresher on LDAP in general.

The section on XML gives a brief overview/refresher on XML, then covers working with XML using various XML libraries. I was pleased that this section did not focus on a single library, but gave a broad view of libraries for work with XML. At the end of this section, the author give a quick overview of YAML (Yet Another Markup Language) and how to work with it.

The section on Low-Ceremony networking covers sockets, and various ways to (ab)use HTTP. This is the shortest and simplest section of the book

The section on Distributed applications with RPC covers all the usual suspects, SOAP, CORBA, RMI, REST, and distributed Ruby. This section has a introduction/refresher on the various technologies covered. The CORBA example integrates Ruby and Java. There is not a C++ example, but the author refers you to online resources.

The final section on Tools and Techniques was one of my favorites. It covers Internationalization, Logging, Creating Daemons and Services, Build and Deployment Processes, Automation with Rake, and Testing Legacy applications. This selection of topics allows the author to cover lots of ground quickly, and gives much information that can be easily applied to any problem domain.

I both enjoyed and learned a great deal from this book. The author used numerous examples of replacing legacy components, and the book is almost worth reading for that reason alone. The sidebars are useful and informative, and the text presents the standard library well and covers 3rd party libraries effectively. The author manages to work Rubyisms into the text very neatly, giving you a nice taste of how to "think in Ruby". On my first reading of the table of contents, I was disappointed by what I thought was a very limited scope, until I discovered that the author covers many areas in the course of making his main points.

This is not a book for a beginning programmer, but once you have a language or two under your belt, I feel this book has a lot to offer. Even if you have little interest in Ruby, most of the examples could be translated into other dynamic languages with minimal fuss. The author is not religious about his choice of Ruby, giving Perl and Python equal footing in the introduction, nor does he gloss over some of the weaknesses of Ruby. One of the most useful things this books offers is different and effective ways to think about enterprise integration. This is definitely a book that lives up to the standards of "The Pragmatic Programmers" series. I'd have no qualms recommending this book to anyone who it working anywhere near Enterprise Integration. I found many of the items useful in day to day systems administration.