Если вы хотите отсортировать часть массива, вам нужно повторно внедрить отсортированные части.Модификатор на месте вам здесь не поможет, потому что foo[i..j]
возвращает копию .Вы сортируете копию на месте, что на самом деле ничего не значит для исходного массива.
Поэтому вместо этого замените исходный фрагмент на отсортированную версию того же самого:
test = %w[ z b f d c h k z ]
test[2..6] = test[2..6].sort
# => ["c", "d", "f", "h", "k"]
test
# => ["a", "b", "c", "d", "f", "h", "k", "q"]