it is Ruby’s implicit block parameter: a block can receive its single automatic value without declaring a pipe-style parameter. This makes short iterator blocks more compact while preserving the block’s ordinary value flow. section 6.3.8
A compact iterator block
[1,2,3,4,5].each { print it * 10, "," } multiplies each element by ten. The same block can be written with an explicit parameter, but the implicit form removes the parameter list.
The feature fits alongside ordinary block parameters, whose bindings remain distinct from same-named variables outside the block. Blocks can also access and reassign variables already in scope, so parameter scope and surrounding local scope should not be conflated. section 6.3.8
