Ruby on rails 使用rails提取tar文件:Errno::enametolong:文件名太长@rb_sysopen

Ruby on rails 使用rails提取tar文件:Errno::enametolong:文件名太长@rb_sysopen,ruby-on-rails,ruby,nokogiri,Ruby On Rails,Ruby,Nokogiri,我有一个包含以下内容的tar文件: /results/02-12-2017_13:17:41/ ├── events.log ├── network_hosts.gnmap ├── network_hosts.nmap ├── network_hosts.xml ├── report.xml └── results.xml 在尝试使用Nokogiri提取和解析文件时,我在rails控制台中遇到以下错误: Errno::enametolong:文件名太长@rb\u sysopen 以下是我目前的

我有一个包含以下内容的tar文件:

/results/02-12-2017_13:17:41/
├── events.log
├── network_hosts.gnmap
├── network_hosts.nmap
├── network_hosts.xml
├── report.xml
└── results.xml
在尝试使用
Nokogiri
提取和解析文件时,我在
rails控制台中遇到以下错误:

Errno::enametolong:文件名太长@rb\u sysopen

以下是我目前的代码:

 test = Test.find(test_id)
 gzip = Zlib::GzipReader.open(test.data.path)

 entries = {}
 tar_extract = Gem::Package::TarReader.new(gzip)
 tar_extract.rewind
 tar_extract.each do |entry|
   entries[File.basename(entry.full_name)] = entry.read
 end

 host_file = File.open(entries["network_hosts.xml"]) { |f| Nokogiri::XML(f) }
最后,我的代码似乎正在打开
host\u文件
,因为它将内容输出到控制台,但它没有将任何内容保存到
host\u文件
,因为发生了以下错误:

Errno::ENAMETOOLONG: File name too long @ rb_sysopen - <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE nmaprun>
<?xml-stylesheet href="file:///usr/local/bin/../share/nmap/nmap.xsl" type="text/xsl"?>
<nmaprun scanner="nmap" args="nmap -sn -oA /results/02-10-2017_18:17:34/network_hosts 10.10.10.1 10.10.10.2" start="1486768654" startstr="Fri Feb 10 18:17:34 2017" version="7.12" xmloutputversion="1.04">
..................
</nmaprun>
from (pry):102:in `initialize'
Errno::enametolong:文件名太长@rb\u sysopen-
..................
from(pry):102:in'initialize'
我做错了什么?

File.open(条目[“network\u hosts.xml]”)
获取network\u hosts.xml的内容,并尝试将其用作文件名来打开文件。由于您已经阅读了network_hosts.xml的内容并将其保存到条目中,因此您可以直接将字符串转换为xml:

host\u file=Nokogiri::XML条目['network\u hosts.XML']