以下代码段适用于大于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的文件?
请告知。
感谢。
巴勒特
答案 0 :(得分:3)
我猜想CSV.read
在需要String时会被传递给StringIO。如果是这样,那么您应该能够加入read
来电并切换到CSV.parse
以让每个人都满意:
lines = CSV.parse(open(resource.csv(:original)).read)