使用Ruby 1.9.2 p290从S3读取小于10K的CSV文件

时间:2011-11-16 04:34:23

标签: ruby csv amazon-s3 paperclip

以下代码段适用于大于10 K的CSV文件。

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

这是使用Paperclip gem读取存储在Amazon S3中的CSV文件。

如果文件大小小于10 K,我会收到以下错误:

ActionView :: Template :: Error(无法将StringIO转换为String):

我用Google搜索并找到以下帖子:

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

所以我尝试使用fastercsv gem,当我再次运行我的程序时,这是我得到的错误:

ActionView :: Template :: Error(请切换到Ruby 1.9的标准CSV库。它是FasterCSV加上对Ruby 1.9的m17n编码引擎的支持。):

看起来像是Catch-22。如何在ruby 1.9.2 p290中处理小于10 K的文件?

请告知。

感谢。

巴勒特

1 个答案:

答案 0 :(得分:3)

我猜想CSV.read在需要String时会被传递给StringIO。如果是这样,那么您应该能够加入read来电并切换到CSV.parse以让每个人都满意:

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