> BTW: why does this happen? > > a = proc { puts "p" } > pshooter a # => p > pshooter a { puts "block" } > # => undefined method `a' for main:Object (NoMethodError) The block associates with 'a': pshooter(a { puts "block"}), so ruby interprets 'a' as a method. In this case you should use do ... end, it is more "loose".