Use lambdas com caso / quando

Poucas pessoas sabem que Proc#===na verdade é um apelido para Proc#call. Isso permite que Proca seja usado como predicado para whene, portanto, permite misturar classtyping e ducktyping:

case( variable )
when Hash then "Real Hash"
when proc{|x| x.respond_to? :[] } then "Responds to :[]"
end

Isso fica ainda mais legal com a nova sintaxe de foguete:

case( variable )
when Hash then "Real Hash"
when ->x{ x.respond_to? :[] } then "Responds to :[]"
end

Agradável!