proc"-6ren"> proc"-我遇到了一些我无法用 Rails 2.3.2 解释的事情。我创建了一个新的应用程序,使用一个 Controller 和一个操作来尝试缩小范围。我的整个 Controller 如下。 class Lin-6ren">
gpt4 book ai didi

ruby-on-rails - 2.2.2 与 2.3.2 中的 Rails "render :text => proc"

转载 作者:数据小太阳 更新时间:2023-10-29 08:02:16 26 4
gpt4 key购买 nike

我遇到了一些我无法用 Rails 2.3.2 解释的事情。我创建了一个新的应用程序,使用一个 Controller 和一个操作来尝试缩小范围。我的整个 Controller 如下。

class LinesController < ApplicationController
def show
respond_to do |format|
format.html { render :text => proc {|response, output|
10.times do |i|
output.write("This is line #{i}\n")
output.flush
end
}
}
end
end
end

当我在 Rails 2.2.2 下运行它时,我看到以下响应。

$ curl http://localhost:3002/lines
This is line 0
This is line 1
This is line 2
This is line 3
This is line 4
This is line 5
This is line 6
This is line 7
This is line 8
This is line 9

但是,当我在 Rails 2.3.2 下运行它时,我得到的却是这个。

$ curl http://localhost:3002/lines
curl: (18) transfer closed with outstanding read data remaining

如果我用浏览器点击它,我只会看到第一行。

This is line 0

请注意,我的示例代码直接来自 render 的 Rails 文档, 除了我将行数从 1000 万行减少到 10 行。

我怀疑答案在 flush() 方法中的某处,但我目前正试图从源代码中挖掘出解释。

最佳答案

我相信这个错误已通过提交 bc2c4a45959be21e6314fba7876b32c1f04cd08a 在 2-3-stable 上得到解决。查看the accompanying ticket .您可以等待 2.3.3(现在不远了),或者从 git 卡住当前的 2-3-stable:

git clone git://github.com/rails/rails.git vendor/rails
cd vendor/rails
git checkout origin/2-3-stable
rm -rf .git

关于ruby-on-rails - 2.2.2 与 2.3.2 中的 Rails "render :text => proc",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1100443/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com