Design Patterns in Ruby delivers what the title suggests. It covers 14 of the patterns from the original 'gang of four' patterns book, and introduces 3 additional patterns that are in widespread use in the ruby world. The book is engagingly and clearly written. More importantly, it illustrates each pattern with an extended example, often showing alternative designs. Each chapter concludes with notes on how the pattern should and should not be used, and lists at least one example of the pattern in actual code.
I had low expectations for this book, but I was very pleasantly surprised. Like many programmers I tend to think of the gang-of-four patterns as being primarily useful in languages that are semantically limited, such as Java and C++. In dynamic languages like ruby and Scheme, design patterns seem to come more naturally, and are easily expressible in the language, and so tend to disappear. But Olsen convinced me that there really are non-trivial uses for most of the patterns that he covered.
In case you're wondering, the patterns are: