Метод delete_at удаляет элемент, но возвращает удаленный элемент, а не новый массив.
Если вы хотите всегда возвращать объект, вы можете использовать метод tap (доступен начиная с Ruby 1.8.7).
a = [1, 2, 3, 4, 5, 6, 7]
a.delete_at(0) # => 1
a # => [2, 3, 4, 5, 6, 7]
a = [1, 2, 3, 4, 5, 6, 7]
a.tap { |a| a.delete_at(0) } # => returns [2, 3, 4, 5, 6, 7]
a # => [2, 3, 4, 5, 6, 7]