2011-11-16 1 views
5

Il seguente frammento di codice funziona bene per file CSV di dimensioni superiori a 10 K.lettura in formato CSV file più piccoli di 10K da S3 con Ruby 1.9.2 P290

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

Questa è la lettura del file CSV memorizzato in Amazzonia S3 usando la gemma Paperclip.

Se la dimensione del file è più piccolo di 10 K tuttavia, ottengo il seguente errore:

ActionView :: Template :: errore (non in grado di convertire in StringIO String):

Googled e trovato il seguente post:

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

Così ho provato a usare la gemma fastercsv, quando mi sono imbattuto di nuovo il mio programma, qui è l'errore che ottengo:

ActionView :: Template :: Errore (Passare alla libreria CSV standard di Ruby 1.9. È FasterCSV più il supporto per il motore di codifica m17n di Ruby 1.9.):

Sembra che sia un Catch-22. Come posso elaborare file più piccoli di 10 K in ruby ​​1.9.2 p290?

Si prega di avvisare.

Grazie.

Bharat

risposta

3

ho intenzione di indovinare che CSV.read è essere consegnato uno StringIO quando vuole una stringa. Se è così, allora si dovrebbe essere in grado di attaccare una chiamata read e interruttore per CSV.parse di rendere tutti felici:

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

Grazie. Lavori. – Bharat