Earlier quoted context omitted.
It has a historical reason: https://bugs.ruby-lang.org/issues/10617
To summarize* and elaborate: Originally in Ruby, multiple assignment inside a conditional caused a parse error. Why? Because multiple assignment originally always returned an array: irb(main): a, b = nil => [nil] In Ruby, non-empty arrays always evaluate to truthy. (The array above has one element, nil.) Hence, multiple assignment inside a conditional would have been meaningless. For this reason, Ruby threw a parse e…
An empty array is still an object, so tests to true. Similarly 0, etc.
The only false values are 'false', of course, and 'nil', the lack of anything.