Faites une pause !
Le module Enumerable définit la méthode lazy qui va transformer vos itérateurs en stream. En plus de pouvoir manipuler plus simplement des Range infini, il pourra être plus performant.

Il fonctionne en changeant l’ordre d’éxécution. Au lieu de procéder « par méthode », il procède « par élément » évitant ainsi des opérations inutiles quand c’est possible.

La méthode eager retransformera en itérateur classique (sans perdre les avantages jusque là) pour être transparent si nécessaire.

Le lien vers la documentation Ruby de lazy.