自从升级到Rails 3.1,我在我的开发日志中看到了这条警告消息:
警告无法确定响应体的内容长度。设置响应的content-length或设置response #chunked = true
这是什么意思,我如何删除它?有问题吗?
自从升级到Rails 3.1,我在我的开发日志中看到了这条警告消息:
警告无法确定响应体的内容长度。设置响应的content-length或设置response #chunked = true
这是什么意思,我如何删除它?有问题吗?
当前回答
Add
config.middleware.use Rack::ContentLength
到你的应用程序。Rb文件,警告将消失,即使与webrick。当呈现json或文本响应时,这也将在生产中正确设置Content-Length。
其他回答
你也可以使用Thin代替默认的Webrick。 将此添加到Gemfile 宝石“薄”
然后rails thin将使用thin,警告将消失。
只是显式地将Gem添加到Gemfile中,为我摆脱了警告消息:
group :development do
gem 'webrick', '~> 1.3.1'
end
下面的补丁解决了我的问题;不用再警告我了。
204年_304_keep_alive.patch
只需编辑文件httpresponse。如上面的链接所示,第205行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或非RVM,甚至多用户或单用户,所以我只是给出它的最后一部分:
.../ruby-1.9.3-p0/lib/ruby/1.9.1/webrick/httpresponse.rb
我希望这能对一些人有所帮助。
EDIT:这个链接指向修改ruby项目主干分支中有问题的行。
另一个解决办法,删除违规行从webrick。它并没有那么有用:
cd `which ruby`/../../lib/ruby/1.9.1/webrick/ && sed -i '.bak' -e'/logger.warn/d' httpresponse.rb
(你可能需要sudo)
这个问题已经在Ruby的主干分支中通过提交给webrick被修复了。
您可以在设置中类似地编辑这个特定的webrick文件。大致位置可以通过以下方法找到:
gem which webrick
实际编辑文件:
nano \`ruby -e"print %x{gem which webrick}.chomp %Q{.rb\n}"\`/httpresponse.rb
(或者使用您最喜欢的编辑器代替nano。)