【发布时间】:2013-03-23 23:06:43
【问题描述】:
今天升级到 Ruby-1.9.3-p392 后,REXML 在尝试检索超过一定大小的 XML 响应时会引发运行时错误 - 一切正常,接收 25 条以下 XML 记录时不会引发错误,但一旦达到一定的 XML 响应长度阈值,我收到此错误:
Error occurred while parsing request parameters.
Contents:
RuntimeError (entity expansion has grown too large):
/.rvm/rubies/ruby-1.9.3-p392/lib/ruby/1.9.1/rexml/text.rb:387:in `block in unnormalize'
我意识到这在最新的 Ruby 版本中有所改变: http://www.ruby-lang.org/en/news/2013/02/22/rexml-dos-2013-02-22/
作为快速修复,我将REXML::Document.entity_expansion_text_limit 的大小更改为更大的数字,错误就消失了。
有没有风险较小的解决方案?
【问题讨论】:
-
我的 p392 版本说它甚至无法识别该设置。导致我的部署失败。
标签: ruby-on-rails ruby rexml