rubyzip Zip :: FileSystem :: ZipFsDir glob方法坏了吗?

时间:2016-07-13 18:34:09

标签: ruby rubyzip

使用版本1.2.0,当我尝试在glob对象上调用ZipFsDir时,我得到了奇怪的结果。在rails控制台中:

> require 'zip/filesystem'
 => true 
> file = '/home/me/test.zip'
 => "/home/me/test.zip" 
> zf = Zip::File.open file
 => #<Zip::File:0x0000000880e0c8...
> d = zf.dir
 => #<Zip::FileSystem::ZipFsDir:0x0000000880e028
> d.class
 => Zip::FileSystem::ZipFsDir
> d.glob("*.shp")
NoMethodError: undefined method `glob' for #<Zip::FileSystem::ZipFileNameMapper:0x0000000880e078>

为什么报告Zip::FileSystem::ZipFileNameMapper的方法未定义?我在一个ZipFsDir对象上调用它。文档明确将glob列为ZipFsDir instance method

1 个答案:

答案 0 :(得分:1)

发生这种情况的一个原因是ZipFileNameMapper确实没有实现glob方法,因为可以看到in it's source

根据这句话:

  

ZipFsFile和ZipFsDir对Zip :: File的所有访问都通过ZipFileNameMapper进行

ZipFileNameMapper应该实现glob它不会这样看起来像是一个可能的错误。