На вопрос уже есть принятый ответ, но стоит отметить причину первоначальной проблемы:
Это проблемная часть:
split('\t')
В Ruby есть несколько форм длястрока в кавычках, которые имеют различия, обычно полезные.
Цитирование из Программирование на Ruby на wikibooks.org :
... двойные кавычки предназначены для интерпретацииэкранированные символы, такие как новые строки и вкладки, чтобы они отображались как новые строки и вкладки, когда строка отображается для пользователя.Однако в одинарных кавычках отображается фактическая escape-последовательность, например, вместо новой строки отображается \ n.
Прочтите далее в связанной статье, чтобы увидеть использование строк %q
и %Q
,Или Google для "разделителей строки ruby", или посмотрите этот вопрос SO .
Так что '\t'
интерпретируется как "обратный слеш + t", тогда как "\t"
является символом табуляции.
String#split
также примет Regexp
, что в этом случае может устранить двусмысленность:
split(/\t/)