Это то, что вам нужно:
string.split(',').in_groups_of(90, false)
Результат:
> str.split(',').in_groups_of(10, false)
=> [["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"],
["11", "12", "13", "14", "15", "16", "17", "18", "19", "20"],
["21", "22", "23", "24", "25", "26", "27", "28", "29", "30"],
["31", "32", "33", "34", "35", "36", "37", "38", "39", "40"],
["41"]]
Или массив с объединенными значениями:
str.split(',').in_groups_of(10, false).map {|s| s.join(',')}
Результат:
> str.split(',').in_groups_of(10, false).map {|s| s.join(',')}
=> ["1,2,3,4,5,6,7,8,9,10",
"11,12,13,14,15,16,17,18,19,20",
"21,22,23,24,25,26,27,28,29,30",
"31,32,33,34,35,36,37,38,39,40",
"41"]
ОБНОВЛЕНИЕ:
С обычным Ruby (не Rails):
str.split(',').each_slice(10).to_a
или объединено:
str.split(',').each_slice(10).map {|s| s.join(',')}