Strings sequenciais

Este é curto, mas achei legal.
"bar".upto("baz").to_a # => ["bar", "bas", "bat", "bau", "bav", "baw", "bax", "bay", "baz"]
O uptométodo em ‘String’ retorna um objeto enumerável que produz cada string desde a string inicial até o final. Por ser enumerável, você pode encadear outros métodos enumeráveis.

"a".upto("zz").select {|ltr| ltr.include?('s') }
#
=> ["s", "as", "bs", "cs", "ds", "es", "fs", "gs", "hs", "is", "js", "ks", "ls", "ms", "ns", "os", "ps", "qs", "rs", "sa", "sb", "sc", "sd", "se", "sf", "sg", "sh", "si", "sj", "sk", "sl", "sm", "sn", "so", "sp", "sq", "sr", "ss", "st", "su", "sv", "sw", "sx", "sy", "sz", "ts", "us", "vs", "ws", "xs", "ys", "zs"]

É o mesmo que:
('a'..'zz').select {|ltr| ltr.include?('s') }

Tal como acontece com o intervalo, não existe downto.

Não tenho certeza de quando eu usei isso, lá estamos nós!