如何在处理时将缓冲区清空并打印到浏览器

时间:2012-10-11 05:26:49

标签: ruby-on-rails ruby buffer

我有一个csv文件(@fn),它有近100,000条记录(大约50兆),我将其插入到mysql表中。例如:

FCSV.foreach(@fn, {:headers => true}) do |row|
    model = Model.new(Hash[row])
    model.save
end

回到我的ASP时代,我可以在此循环中输出并将缓冲区作为html打印到用户屏幕,以便提供关于该过程有多远的视觉反馈。在轨道上的红宝石中,是否有相同的方法?

如果有帮助,我使用的是Rails 2.3.9和Ruby 1.8.7。

我意识到有十几种方法可以完成反馈,例如后台作业等。但我真正想知道的是如何在每次迭代时将缓冲区转储并打印到屏幕(而非控制台)。循环。

1 个答案:

答案 0 :(得分:0)

这个问题对您有所帮助。它解释了如何使用旧的rails客户端进行流式传输。

Ruby on Rails 3: Streaming data through Rails to client

以下是直接来自帖子的示例:

render :text => proc { |response, output|
  10_000_000.times do |i|
    output.write("This is line #{i}\n")
  end
}