Between us, we speak a lot about Ruby at conferences and to user groups, and it’s inevitable that at some point, whether after a talk (if we’ve given one) or when we’re just hacking on something, someone will approach with a problem along the lines of, “I know Ruby, but I really don’t know how to work with XML very well.” “I know Ruby, but I can’t really figure out how to get it to talk to our web service.” “I know Ruby, but I’m having a problem getting it to integrate with our single-sign-on system.” We welcome these questions and answer them gladly, because at least we know people are trying to use Ruby in the real world. But these questions also expose an information trend that this book aims to curb.
Many Rubyists have been worried for a while that because Ruby found a niche on the web with Ruby on Rails, this would become its only niche. Don’t let us mince words here: Rails is a fantastic framework, but it certainly doesn’t represent everything that Ruby can do. When we were given the chance to write this book, we were very excited about the opportunity to share our experience working with Ruby in environments outside (or at least on the edge of) the web. It’s a wide area to cover, but it’s one that a lot of people are working in and making progress in; at the same time, only limited information about it is generally available.
We’ve been using Ruby for a while now. It’s been a long, wild road that we’ve driven down! Sometimes we’ve skidded off the side, sometimes we’ve dangerously strayed into other lanes, but we’ve driven forward—occasionally blazing new paths and at other times following the tracks of those before us. We’ve used Ruby in a lot of exotic places, and we couldn’t have done it without the help of a lot of people.
Now it’s our turn to pay it forward and to share what we have learned. This book has gone through many incarnations, authors, Rails versions, and revisions, but finally you hold in your hands the culmination of approximately 20 years of combined Ruby experience, 2 years of writing and revising (we Rubyists tend to be busy, slow people), and innumerable conversations. Enjoy.