Чтение в CSV-файлах размером менее 10 КБ из S3 с Ruby 1.9.2 p290 - PullRequest
5 голосов
/ 16 ноября 2011

Следующий фрагмент кода отлично работает для файлов CSV размером более 10 К.

lines = CSV.read(open(resource.csv(:original)))

Это чтение CSV-файла, хранящегося в Amazon S3, с использованием Paperclip gem.

Еслиразмер файла меньше 10 К, однако я получаю следующую ошибку:

ActionView :: Template :: Error (не могу преобразовать StringIO в строку):

Я гуглил и обнаружил следующееpost:

http://adayinthepit.com/?p=269

Итак, я попытался использовать гем quickcsv, когда я снова запустил свою программу, вот ошибка, которую я получаю:

ActionView ::Template :: Error (Пожалуйста, переключитесь на стандартную библиотеку CSV Ruby 1.9. Это FasterCSV плюс поддержка механизма кодирования m17n в Ruby 1.9.):

Похоже, это Catch-22.Как мне обработать файлы размером менее 10 К в ruby ​​1.9.2 p290?

Пожалуйста, сообщите.

Спасибо.

Бхарат

1 Ответ

3 голосов
/ 16 ноября 2011

Я собираюсь догадаться, что CSV.read вручается StringIO, когда он хочет String. Если это так, то вы сможете набрать read звонок и переключиться на CSV.parse, чтобы сделать всех счастливыми:

lines = CSV.parse(open(resource.csv(:original)).read)
...