在ruby中写入csv时跳过了行

时间:2014-07-07 11:39:49

标签: ruby csv sinatra

我正在编写一个小应用程序,它从上传的csv文件中获取数据,解析每一行,然后重新排列新csv文件中的数据,然后将其下载。

以下是创建新csv文件并下载它的代码:

CSV.open("template.csv", "w") do |csv|


  @formatted_lines.each do |line|

    csv << line
  end


  # Download CSV
  send_file("template.csv", :disposition => 'attachment', :filename => File.basename("template.csv"))

end

我最终得到一个包含270行的csv文件,即使@formatted_lines数组中有280行/数组。原始csv文件中的数据在解析时会导致错误,这没有任何问题。为什么会切断最后10行呢?

1 个答案:

答案 0 :(得分:4)

在尝试发送文件之前,您实际上并未关闭该文件,最后十行可能只是缓冲并且尚未写入磁盘。尝试在send_file阻止后执行CSV.open