http://www.ruby-doc.org/core-1.9/classes/Object.html#M000191
Yields x to the block, and then returns x. The primary purpose of this method is to "tap into" a method chain, in order to perform operations on intermediate results within the chain.
(1..10) .tap {|x| puts "original: #{x.inspect}"}
.to_a .tap {|x| puts "array: #{x.inspect}"}
.select {|x| x%2==0} .tap {|x| puts "evens: #{x.inspect}"}
.map { |x| x*x } .tap {|x| puts "squares: #{x.inspect}"}
Yeah, I knew those were mostly from the links, and that we're pretty much on the same page already. Just wanted to put my 2 cents in. I'm curious to see what @patmaddox's case for tap is...