2011-11-16 14 views
5

El siguiente fragmento de código funciona bien para el archivo CSV tamaño superior a 10 K.lectura en archivos CSV menor que 10K de S3 con Ruby 1.9.2 p290

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

Esta es la lectura del archivo CSV almacenado en Amazon S3 utilizando la gema Paperclip.

Si el tamaño del archivo es menor que 10 K Sin embargo, me sale el siguiente error:

ActionView :: :: Plantilla de error (no se puede convertir en StringIO String):

Googled y encontré el siguiente mensaje:

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

así que traté de usar la gema fastercsv, cuando me encontré con mi programa de nuevo, aquí está el error que me sale:

ActionView :: Plantilla :: Error (Cambie a la biblioteca CSV estándar de Ruby 1.9. Es compatible con FasterCSV plus para el motor de codificación m17n de Ruby 1.9.):

Parece que es un Catch-22. ¿Cómo puedo procesar archivos de menos de 10 K en ruby ​​1.9.2 p290?

Por favor, asesorar.

Gracias.

Bharat

Respuesta

3

voy a adivinar que CSV.read ahora se os confía un StringIO cuando se quiere una cadena. Si es así, entonces usted debería ser capaz de mantener una llamada en read y el interruptor de CSV.parse hacer felices a todos:

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

Gracias. Trabajos. – Bharat

Cuestiones relacionadas