自从升级到Rails 3.1之后,我在开发日志中看到以下警告消息:
WARN无法确定响应正文的内容长度。设置响应的内容长度或设置
Response#chunked = true
这是什么意思,我该如何删除?这是个问题吗?
rails s thin
; - 没有更多警告。
自从升级到Rails 3.1之后,我在开发日志中看到以下警告消息:
WARN无法确定响应正文的内容长度。设置响应的内容长度或设置
Response#chunked = true
这是什么意思,我该如何删除?这是个问题吗?
rails s thin
; - 没有更多警告。
Answers:
向Rails-Core的成员之一问了同样的问题:
https://twitter.com/luislavena/status/108998968859566080
答案是:
https://twitter.com/tenderlove/status/108999110136303617
是的,很好。需要清理,但没有受到伤害。
gem 'thin'
到gemfile中,使用来启动服务器rails server thin
)作为解决方法。(哎呀,刚刚注意到@Scott Lowe已经在上面说了这一点。)
以下补丁解决了我的问题;没有更多的警告给我。
只需在第205行编辑文件httpresponse.rb,如上面的链接所示;实际上,该链接显示了对将来版本的Ruby的更正。
我在通过RVM以单个用户身份安装的ruby 1.9.3-p0上使用rails 3.2.0。因此,在我的情况下,位置为:
~/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/webrick/httpresponse.rb
根据安装类型,是否为RVM甚至是多用户或单用户,要更改的文件的位置会有所不同,所以我只给出文件的最后一部分:
.../ruby-1.9.3-p0/lib/ruby/1.9.1/webrick/httpresponse.rb
我希望这对某人有帮助。
编辑:这是更改红宝石项目的主干分支中有关行的提交的链接。
只是将Gem明确地添加到Gemfile中,为我摆脱了警告消息:
group :development do
gem 'webrick', '~> 1.3.1'
end
您也可以使用Thin代替默认的Webrick。将此添加到Gemfile
gem 'thin'
然后rails s thin
会变薄,警告会消失。
thin
在development
组。Rails 4在运行时似乎会自动拾取它rails s
如果您使用的是.rvm,请执行此操作以对其进行修复...
正如JoãoSoares所提到的,所有功劳都归功于他,如果您不希望摆脱对发展的警告,这就是您可以做的。
line 107
给我的。
通过对Webrick的提交,该问题已在Ruby的主干分支中得到解决。
您可以在设置中类似地编辑此特定的webrick文件。大致位置可以通过以下方式找到:
gem which webrick
实际编辑文件:
nano \`ruby -e"print %x{gem which webrick}.chomp %Q{.rb\n}"\`/httpresponse.rb
(或者使用您喜欢的编辑器代替nano。)
nano `ruby -e"print %x{gem which webrick}.chomp %Q{.rb\n}"`/httpresponse.rb
。
JRuby版本:如果您使用的是.rvm,请执行此操作以对其进行修复...
正如提到的若昂·苏亚雷斯和Kjellski,这就是,如果你想摆脱对发展这一警告的,你正在使用JRuby你可以做什么。
另一个解决方法是从webrick中删除违规行。它不是那么有用:
cd `which ruby`/../../lib/ruby/1.9.1/webrick/ && sed -i '.bak' -e'/logger.warn/d' httpresponse.rb
(您可能需要sudo
)
加
config.middleware.use Rack::ContentLength
到您的application.rb
文件,即使使用webrick,警告也会消失。Content-Length
呈现json或文本响应时,这也将在生产中正确设置。