No, it has nothing to do with +=. The unary & operator, when used in a method call, turns the given Proc object into a block. If the operand is not a Proc (as in this case where it is a symbol), first to_proc is called on it and then the resulting Proc object is turned into a block.