Может быть, это может работать для вас:
100.times.map{ ('a'..'z').to_a.sample }.join('')
#=> "jbcyklmcdaxzpucrrlguzfdmipnkmqllowziirdvcysjmyxirjnagoojazepxxmzzysonjicbjtgqinkvenastfmuvayefrxjjhn"
Или, чтобы получить больше символов:
chars = [*('A'..'Z'), *('a'..'z'), *('0'..'9')]
100.times.map{ chars.sample }.join('')
#=> "3kwsbKYTmXR9qmmC1JDdAkIP1tqA89L0ABF1et2drpPMUVP01qUHbmynB4iOzsGrmYzCdpva98boqoR2q6tIcOAvNb0ZiQ9tkkLr"