#TIL turns out that's not quite right. Coercion methods are public on Kernel, so Kernel.public_send(:Array, 1) will work. But public_send(:Array, 1) will raise a NoMethodError. Seems like the execution context of a ruby program is not Kernel, but an Object?! And coercion methods are defined for Object, but they are private, and they are inherited to any other class.
#keeprubyweird