Book: The Well Grounded Rubyist

| by Charlie Martin Follow 0 Followers on Jan 29, 2009. Estimated reading time: 3 minutes |

A note to our readers: You asked so we have developed a set of features that allow you to reduce the noise: you can get email and web notifications for topics you are interested in. Learn more about our new features.

The Well Grounded Rubyist is a new and rewritten version of the popular Ruby for Rails. Today InfoQ publishes a review and excerpts Chapter 15.

The Well Grounded RubyistDownload: Chapter 15. Callbacks, hooks, and runtime introspection (PDF)

David A. Black’s Ruby for Rails was one of the early and popular Ruby texts. Now, Manning is publishing an extensive revision, The Well Grounded Rubyist, to be in the bookstores in March.

The Ruby language has grown in the intervening years, substantially in features and available libraries, and dramatically in acceptance and popular use. So it is certainly time for a new version. The Well Grounded Rubyist is intended to introduce the reader to Ruby, but isn’t really intended for a beginning programmer; the target audience is more the experienced programmer transitioning to Ruby. It begins with a one-chapter concise introduction to Ruby syntax including files and how classes and modules are laid out, the basics of the Ruby installation on a user system, the use of the Ruby interpreter irb, and some of the basic tools, particularly gem and rake. The first chapter (which is also available for download at the Manning site) would serve in itself to allow an experienced programmer to read and understand most Ruby code.

The book is broken into three sections. The rest of the first section, on Ruby Foundations, extends the introduction in the first chapter by covering, in separate chapters:

  • Objects, methods, and local variables
  • Organizing objects with classes
  • Modules and program organization
  • The default object (self) and scope, and visibility
  • Controlling program flow

The next section is on the various built in classes and modules available with Ruby, including chapters on:

  • Built-in essentials
  • Strings, symbols, numbers, and other scalar objects
  • Collections and container objects
  • Collections central: Enumerables and enumerator
  • Regular expressions and regex-based string operations
  • File, IO, and system operations

The third section is on the dynamics of Ruby. These chapters are particularly interesting because Ruby, as a dynamic language, draws much of its advantages from the powerful facilities it has for taking advantage of interpreter-time information to simplify things that can be difficult in compiled languages like C, C++, or Java. The third section contains three chapters:

  • Object individuation
  • Callable and runnable objects
  • Callbacks, hooks, and runtime introspection

The chapter on Callbacks, hooks, and runtime introspection is available for download directly from InfoQ, and is one of the most interesting chapters. Ruby is a descendent, in one way or another, of most of the object-oriented languages, but arguably draws the most from Smalltalk and Lisp, even though the syntax is distinctly more like a block-structured language. But the influence of Smalltalk is strongly felt in the openness of classes, allowing new code to be added at runtime to any class already available to the system, as Smalltalk does; the influence of Lisp shows in the use of code blocks and closures, and in the extensive use of continuations (“call/cc” in scheme, available through the yield keyword in Ruby.)

The runtime introspection and reflection facilities, allow a lot of things to be done simply in Ruby that are difficult in other languages. If an unknown method is called on a class, defining a missing_method method in the class allows that method call to be intercepted, and dealt with by user code instead of simply causing a run-time error or exception. Internals of the Class object in Ruby can be examined and extended, and the calling stack is available at run time, so user code can examine and its own state in a number of useful ways. The chapter concludes with an implementation of a very basic unit testing framework similar to the unit test frameworks provided with Ruby.

All in all, The Well-Grounded Rubyist is a strong introduction to Ruby for any experienced programmer, and will provide useful information to all but the absolutely most experienced and expert Rubyist.


This excerpt is from The Well-Grounded Rubyist, to be published March 2009. It is being reproduced here by permission from Manning Publications. Manning early access books and ebooks are sold exclusively through Manning. Visit the book's page for more information.


Rate this Article

Adoption Stage

Hello stranger!

You need to Register an InfoQ account or or login to post comments. But there's so much more behind being registered.

Get the most out of the InfoQ experience.

Tell us what you think

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread
Community comments

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread


Login to InfoQ to interact with what matters most to you.

Recover your password...


Follow your favorite topics and editors

Quick overview of most important highlights in the industry and on the site.


More signal, less noise

Build your own feed by choosing topics you want to read about and editors you want to hear from.


Stay up-to-date

Set up your notifications and don't miss out on content that matters to you