Enumerating extends Enumerable with "lazy" versions of various operations, allowing streamed processing of large (or even infinite) collections. Even in Ruby 1.8.x.
Mike Williams
gem "enumerating", "~> 1.2.1"