使用版本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。
答案 0 :(得分:1)
发生这种情况的一个原因是ZipFileNameMapper
确实没有实现glob
方法,因为可以看到in it's source。
根据这句话:
ZipFsFile和ZipFsDir对Zip :: File的所有访问都通过ZipFileNameMapper进行
ZipFileNameMapper
应该实现glob
它不会这样看起来像是一个可能的错误。