Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Ruby中按全名对Tar条目排序时出错_Ruby_Tar - Fatal编程技术网

在Ruby中按全名对Tar条目排序时出错

在Ruby中按全名对Tar条目排序时出错,ruby,tar,Ruby,Tar,我想按tar文件中包含的文件名的字母顺序枚举tar文件的内容。以下内容因错误而消失:closed Gem::Package::TarReader::Entry Gem::Package::TarReader.new io do | tar| tar.sort_by{e|e.full_name}.each.map do|tar_条目| 文件内容=tar\u entry.read #此处有更多代码,为清晰起见未显示 文件内容 结束 结束 以下是堆栈跟踪: Liquid Exception: clo

我想按tar文件中包含的文件名的字母顺序枚举tar文件的内容。以下内容因错误
而消失:closed Gem::Package::TarReader::Entry

Gem::Package::TarReader.new io do | tar|
tar.sort_by{e|e.full_name}.each.map do|tar_条目|
文件内容=tar\u entry.read
#此处有更多代码,为清晰起见未显示
文件内容
结束
结束
以下是堆栈跟踪:

Liquid Exception: closed Gem::Package::TarReader::Entry in /var/sitesUbuntu/www.mslinn.com/_drafts/2020-09-28-using-aws-cloud9-with-jump-server.html
jekyll 3.8.7 | Error:  closed Gem::Package::TarReader::Entry
/usr/lib/ruby/2.7.0/rubygems/package/tar_reader/entry.rb:30:in `check_closed': closed Gem::Package::TarReader::Entry (IOError)
        from /usr/lib/ruby/2.7.0/rubygems/package/tar_reader/entry.rb:133:in `read'
        from /var/sitesUbuntu/www.mslinn.com/_plugins/archive_display.rb:14:in `block (2 levels) in untar_contents'
        from /var/sitesUbuntu/www.mslinn.com/_plugins/archive_display.rb:13:in `each'
        from /var/sitesUbuntu/www.mslinn.com/_plugins/archive_display.rb:13:in `each'
        from /var/sitesUbuntu/www.mslinn.com/_plugins/archive_display.rb:13:in `map'
        from /var/sitesUbuntu/www.mslinn.com/_plugins/archive_display.rb:13:in `block in untar_contents'
        from /usr/lib/ruby/2.7.0/rubygems/package/tar_reader.rb:29:in `new'
        from /var/sitesUbuntu/www.mslinn.com/_plugins/archive_display.rb:12:in `untar_contents'
        from /var/sitesUbuntu/www.mslinn.com/_plugins/archive_display.rb:25:in `block in render'
        from /var/sitesUbuntu/www.mslinn.com/_plugins/archive_display.rb:24:in `open'
        from /var/sitesUbuntu/www.mslinn.com/_plugins/archive_display.rb:24:in `render'
        from /var/lib/gems/2.7.0/gems/liquid-4.0.3/lib/liquid/block_body.rb:103:in `render_node_to_output'
        from /var/lib/gems/2.7.0/gems/liquid-4.0.3/lib/liquid/block_body.rb:91:in `render'
        from /var/lib/gems/2.7.0/gems/liquid-4.0.3/lib/liquid/template.rb:208:in `block in render'
        from /var/lib/gems/2.7.0/gems/liquid-4.0.3/lib/liquid/template.rb:242:in `with_profiling'
        from /var/lib/gems/2.7.0/gems/liquid-4.0.3/lib/liquid/template.rb:207:in `render'
        from /var/lib/gems/2.7.0/gems/liquid-4.0.3/lib/liquid/template.rb:220:in `render!'
        from /var/lib/gems/2.7.0/gems/jekyll-3.8.7/lib/jekyll/liquid_renderer/file.rb:30:in `block (2 levels) in render!'
        from /var/lib/gems/2.7.0/gems/jekyll-3.8.7/lib/jekyll/liquid_renderer/file.rb:42:in `measure_bytes'
        from /var/lib/gems/2.7.0/gems/jekyll-3.8.7/lib/jekyll/liquid_renderer/file.rb:29:in `block in render!'
        from /var/lib/gems/2.7.0/gems/jekyll-3.8.7/lib/jekyll/liquid_renderer/file.rb:49:in `measure_time'
        from /var/lib/gems/2.7.0/gems/jekyll-3.8.7/lib/jekyll/liquid_renderer/file.rb:28:in `render!'
        from /var/lib/gems/2.7.0/gems/jekyll-3.8.7/lib/jekyll/renderer.rb:126:in `render_liquid'
        from /var/lib/gems/2.7.0/gems/jekyll-3.8.7/lib/jekyll/renderer.rb:79:in `render_document'
        from /var/lib/gems/2.7.0/gems/jekyll-3.8.7/lib/jekyll/renderer.rb:62:in `run'
        from /var/lib/gems/2.7.0/gems/jekyll-3.8.7/lib/jekyll/site.rb:479:in `render_regenerated'
        from /var/lib/gems/2.7.0/gems/jekyll-3.8.7/lib/jekyll/site.rb:464:in `block (2 levels) in render_docs'
        from /var/lib/gems/2.7.0/gems/jekyll-3.8.7/lib/jekyll/site.rb:463:in `each'
        from /var/lib/gems/2.7.0/gems/jekyll-3.8.7/lib/jekyll/site.rb:463:in `block in render_docs'
        from /var/lib/gems/2.7.0/gems/jekyll-3.8.7/lib/jekyll/site.rb:462:in `each_value'
        from /var/lib/gems/2.7.0/gems/jekyll-3.8.7/lib/jekyll/site.rb:462:in `render_docs'
        from /var/lib/gems/2.7.0/gems/jekyll-3.8.7/lib/jekyll/site.rb:191:in `render'
        from /var/lib/gems/2.7.0/gems/jekyll-3.8.7/lib/jekyll/site.rb:71:in `process'
        from /var/lib/gems/2.7.0/gems/jekyll-3.8.7/lib/jekyll/command.rb:28:in `process_site'
        from /var/lib/gems/2.7.0/gems/jekyll-3.8.7/lib/jekyll/commands/build.rb:65:in `build'
        from /var/lib/gems/2.7.0/gems/jekyll-3.8.7/lib/jekyll/commands/build.rb:36:in `process'
        from /var/lib/gems/2.7.0/gems/jekyll-3.8.7/lib/jekyll/commands/serve.rb:93:in `block in start'
        from /var/lib/gems/2.7.0/gems/jekyll-3.8.7/lib/jekyll/commands/serve.rb:93:in `each'
        from /var/lib/gems/2.7.0/gems/jekyll-3.8.7/lib/jekyll/commands/serve.rb:93:in `start'
        from /var/lib/gems/2.7.0/gems/jekyll-3.8.7/lib/jekyll/commands/serve.rb:75:in `block (2 levels) in init_with_program'
        from /var/lib/gems/2.7.0/gems/mercenary-0.3.6/lib/mercenary/command.rb:220:in `block in execute'
        from /var/lib/gems/2.7.0/gems/mercenary-0.3.6/lib/mercenary/command.rb:220:in `each'
        from /var/lib/gems/2.7.0/gems/mercenary-0.3.6/lib/mercenary/command.rb:220:in `execute'
        from /var/lib/gems/2.7.0/gems/mercenary-0.3.6/lib/mercenary/program.rb:42:in `go'
        from /var/lib/gems/2.7.0/gems/mercenary-0.3.6/lib/mercenary.rb:19:in `program'
        from /var/lib/gems/2.7.0/gems/jekyll-3.8.7/exe/jekyll:15:in `<top (required)>'
        from /home/mslinn/gems/bin/jekyll:23:in `load'
        from /home/mslinn/gems/bin/jekyll:23:in `<main>'
Liquid Exception:closed Gem::Package::TarReader::Entry in/var/sitesUbuntu/www.mslinn.com//\u drafts/2020-09-28-using-aws-cloud9-with-jump-server.html
jekyll 3.8.7 |错误:closed Gem::Package::TarReader::Entry
/usr/lib/ruby/2.7.0/rubygems/package/tar\u reader/entry.rb:30:in'check\u closed':closed Gem::package::TarReader::entry(IOError)
from/usr/lib/ruby/2.7.0/rubygems/package/tar_reader/entry.rb:133:in'read'
from/var/sitesUbuntu/www.mslinn.com/_plugins/archive_display.rb:14:untar_目录中的块(2级)
from/var/sitesUbuntu/www.mslinn.com/_plugins/archive\u display.rb:13:in'each'
from/var/sitesUbuntu/www.mslinn.com/_plugins/archive\u display.rb:13:in'each'
from/var/sitesUbuntu/www.mslinn.com/_plugins/archive\u display.rb:13:in'map'
from/var/sitesUbuntu/www.mslinn.com/_plugins/archive_display.rb:13:in'block in untar_contents'
from/usr/lib/ruby/2.7.0/rubygems/package/tar_reader.rb:29:in'new'
from/var/sitesUbuntu/www.mslinn.com/_plugins/archive\u display.rb:12:in'untar\u contents'
来自/var/sitesUbuntu/www.mslinn.com/_plugins/archive_display.rb:25:in“渲染中的块”
from/var/sitesUbuntu/www.mslinn.com/_plugins/archive\u display.rb:24:in'open'
from/var/sitesUbuntu/www.mslinn.com/_plugins/archive\u display.rb:24:in'render'
from/var/lib/gems/2.7.0/gems/liquid-4.0.3/lib/liquid/block\u body.rb:103:“渲染节点到输出”
from/var/lib/gems/2.7.0/gems/liquid-4.0.3/lib/liquid/block_body.rb:91:in'render'
from/var/lib/gems/2.7.0/gems/liquid-4.0.3/lib/liquid/template.rb:208:“渲染中的块”中
from/var/lib/gems/2.7.0/gems/liquid-4.0.3/lib/liquid/template.rb:242:in“with_profiling”
from/var/lib/gems/2.7.0/gems/liquid-4.0.3/lib/liquid/template.rb:207:in'render'
from/var/lib/gems/2.7.0/gems/liquid-4.0.3/lib/liquid/template.rb:220:in'render!'
从/var/lib/gems/2.7.0/gems/jekyll-3.8.7/lib/jekyll/liquid_renderer/file.rb:30:在“渲染中的块(2个级别)”中
来自/var/lib/gems/2.7.0/gems/jekyll-3.8.7/lib/jekyll/liquid\u renderer/file.rb:42:in“measure\u bytes”
来自/var/lib/gems/2.7.0/gems/jekyll-3.8.7/lib/jekyll/liquid_renderer/file.rb:29:在“渲染中的块”中
来自/var/lib/gems/2.7.0/gems/jekyll-3.8.7/lib/jekyll/liquid\u renderer/file.rb:49:in'measure\u time'
来自/var/lib/gems/2.7.0/gems/jekyll-3.8.7/lib/jekyll/liquid_renderer/file.rb:28:in'render!'
from/var/lib/gems/2.7.0/gems/jekyll-3.8.7/lib/jekyll/renderer.rb:126:in'render_liquid'
from/var/lib/gems/2.7.0/gems/jekyll-3.8.7/lib/jekyll/renderer.rb:79:in“render_document”
from/var/lib/gems/2.7.0/gems/jekyll-3.8.7/lib/jekyll/renderer.rb:62:in'run'
from/var/lib/gems/2.7.0/gems/jekyll-3.8.7/lib/jekyll/site.rb:479:in'render_'
from/var/lib/gems/2.7.0/gems/jekyll-3.8.7/lib/jekyll/site.rb:464:in `渲染文档中的块(2层)'
from/var/lib/gems/2.7.0/gems/jekyll-3.8.7/lib/jekyll/site.rb:463:in'each'
from/var/lib/gems/2.7.0/gems/jekyll-3.8.7/lib/jekyll/site.rb:463:“渲染文档中的块”
from/var/lib/gems/2.7.0/gems/jekyll-3.8.7/lib/jekyll/site.rb:462:in'each_value'
from/var/lib/gems/2.7.0/gems/jekyll-3.8.7/lib/jekyll/site.rb:462:in'render_docs'
from/var/lib/gems/2.7.0/gems/jekyll-3.8.7/lib/jekyll/site.rb:191:in'render'
from/var/lib/gems/2.7.0/gems/jekyll-3.8.7/lib/jekyll/site.rb:71:正在进行中
from/var/lib/gems/2.7.0/gems/jekyll-3.8.7/lib/jekyll/command.rb:28:在“进程站点”中
from/var/lib/gems/2.7.0/gems/jekyll-3.8.7/lib/jekyll/commands/build.rb:65:in'build'
from/var/lib/gems/2.7.0/gems/jekyll-3.8.7/lib/jekyll/commands/build.rb:36:在“进程”中
from/var/lib/gems/2.7.0/gems/jekyll-3.8.7/lib/jekyll/commands/service.rb:93:in'block in start'
from/var/lib/gems/2.7.0/gems/jekyll-3.8.7/lib/jekyll/commands/service.rb:93:in'each'
from/var/lib/gems/2.7.0/gems/jekyll-3.8.7/lib/jekyll/commands/service.rb:93:in'start'
from/var/lib/gems/2.7.0/gems/jekyll-3.8.7/lib/jekyll/commands/service.rb:75:in`init_中的block(2层)和_程序'
from/var/lib/gems/2.7.0/gems/雇佣军-0.3.6/lib/雇佣军/command.rb:220:“执行中的块”中
from/var/lib/gems/2.7.0/gems/雇佣军-0.3.6/lib/雇佣军/command.rb:220:in'each'
from/var/lib/gems/2.7.0/gems/雇佣军-0.3.6/lib/雇佣军/command.rb:220:in'execute'
from/var/lib/gems/2.7.0/gems/雇佣军-0.3.6/lib/雇佣军/program.rb:42:in'go'
from/var/lib/gems/2.7.0/gems/雇佣军-0.3.6/lib/雇佣军。rb:19:in“program”
从/var/lib/gems/2.7.0/gems/jekyll-3.8.7/exe/jekyll:15:in`'
from/home/mslinn/gems/bin/jekyll:23:in'load'
from/home/mslinn/gems/bin/jekyll:23:in`'

我只需要对结果进行排序:

要求“rubygems/包”
打开(tar_名称,“rb”)do|File|
Gem::Package::TarReader.new(文件)do | tar|
返回tar.each.map{| tar_条目|
如果tar_entry.file?
文件内容=tar\u entry.read.strip
“{tar_entry.full_name}{file_contents}”
其他的
""
结束
}.sort|u by{e|e.full_name}
结束
结束
以下是我在生产中实际编写代码的方式:

def traverse\u tar(tar\u名称)
需要“rubygems/包”
打开(tar_名称,“rb”)do|File|
Gem::Package::TarReader.new(文件)do | tar|
返回tar.each.map{