Ruby has a fairly powerful case..when..else construct for when you need to match criteria against a single variable. What is the "canonical" way to match criteria against multiple variables without simply nesting case statements?
Wrapping multiple variables in an array (like [x, y]) and matching against it isn't equivalent, because Ruby won't apply the magical case === operator to the elements of the array; the operator is only applied to the array itself.
I'm going to go ahead and respond with a community-wiki answer with a (defeated) stab at this question.
===to each element recursively... ideone.com/yMAlZ['hello', 3]won't match with[String, 3].==and===.===from Object, so the default behavior is to compare the hash values of both sides of the test, not to test the contents. If you want a test of types and values, you'll need to add===to Array and implement the behavior desired.