Ruby не может проанализировать параметр по умолчанию после сплата.Если у вас есть значение по умолчанию в параметре после восклицательного знака, как Ruby узнает, что назначить переменную?
def my_method(*a, b = "foo"); end
Допустим, я затем вызываю my_method:
my_method(1, 2, 3)
Ruby имеетнет никакого способа узнать, отсутствует ли b, в этом случае вы хотите, чтобы b было foo, а a равно [1,2,3], или если b присутствует, и в этом случае вы хотите, чтобы оно было 3.