In Ruby non chiedi "di che tipo sei?", chiedi "sai fare questo?". È il duck typing: se un oggetto risponde ai metodi che ti servono, va bene, indipendentemente dalla sua classe.

def stampa_tutto(collezione)
  collezione.each { |x| puts x }   # basta che risponda a each
end

stampa_tutto([1, 2, 3])
stampa_tutto({ a: 1 })
stampa_tutto(1..3)

Nessuno di questi è "un Array", ma tutti rispondono a each, quindi funzionano. Invece di if x.is_a?(Array), ti fidi dell'interfaccia.

Se proprio devi controllare, usa respond_to?(:each) invece della classe: verifichi il comportamento, non l'etichetta. Questo rende il codice flessibile e facile da estendere: aggiungi una nuova classe che risponde a each e tutto continua a funzionare.