When giving a block to a method, I think of it as sending a special proc argument.
You can send regular positional arguments, or kwargs, and you can also send 1 special proc argument.
When you use the literal syntax:
some_method { |x| x.to_s }
it's called a block, though it's really just a special syntax for a proc (special syntax in that it ends up having an elevated status in the method body (see yield)).