From: Alex Chaffee Date: 2013-04-13T08:42:00+09:00 Subject: Re: Trying to understand blocks http://codelikethis.com/lessons/ruby_blocks/blocks has slides and a video lecture that might help you out. Basically, yield is calling an anonymous, invisible function pointer. It's sort of like def foo(p) p.call("Jim") end def bar baz = lambda { |n| n.upcase } foo(baz) end The & turns a proc into a block and back again. It's one of the oddest parts of Ruby and it's almost (but not entirely) syntactic sugar so you can use "do" blocks to make your code look cool. (Not a dis: I think it's great, but it is confusing.) - A