在我的Rails应用程序中,我想对从FTP服务器下载的一组XML文件进行gunzip。
每个XML文件都与商家相关联,并且包含产品详细信息。我正在尝试使用GzipReader
解压缩每个文件,然后想要使用Nokogiri::XML::SAX::Document
解析它。
“gz”文件的大小可变,我能够解压缩大小约为140 MB的文件,但是当文件较大(~428 MB)时,应用程序会抛出此错误:
cj_unzipping.rb:10:in `read': negative re-allocation size (NoMemoryError)
from cj_unzipping.rb:10:in `block in <main>'
我看了“Why do I get a Nokogiri crash and MemoryError: negative re-allocation size?”,但我的磁盘上还有很多空间。
require 'rubygems'
require 'zlib'
Zlib::GzipReader.open("/home/elmiya/project/mywebapp/cj1.xml.gz") { |gz|
g = File.new("/home/elmiya/project/mywebapp/cj1.xml", "w")
g.write(gz.read)
g.close()
}
第gz.read
行会产生问题。
我正在跑步:
Rails version: 4.0.2
Ruby version: 2.0.0p643
有人可以帮我解决这个问题吗?