O método Kernel # Array () é útil quando você deseja converter ou agrupar um objeto em uma matriz, a menos que já seja uma matriz; nesse caso, ele apenas retorna a si mesmo.
No entanto, a maneira como o método funciona é tentar chamar #to_ary e também #to_a. Se o objeto responder a um desses métodos, o resultado pode não ser o que você esperava.
Para strings e números e muitos outros objetos de instância de classe principal isso funciona bem
Array(12)
#=> [12]
Array("asdf")
#=> ["asdf"]
Mas tenha cuidado com intervalos e valores de tempo
Array(Time.mktime(2013,4,5,6,7,8))
#=> [8, 7, 6, 5, 4, 2013, 5, 95, true, "EST"]
Qual é o valor de retorno de #to_a no objeto de tempo .
Da mesma forma com intervalos
Array(1..3)
#=> [1,2,3]
Ainda vale a pena verificar o tipo se você precisar envolver o objeto em uma matriz se você espera tempos ou intervalos. Mas, na verdade, qualquer classe não principal poderia responder a #to_ary ou #to_a de uma maneira que você não esperava.