我试图在我的spree插件中解压缩一个文件。
在模块中定义了解压方法,如下所示。

module ImportImages
  class Zipper
    def self.unzip(zip, unzip_dir, remove_after = false)
      Zip::File.open(zip) do |zip_file|
        zip_file.each do |f|
          f_path=File.join(unzip_dir, f.name)
          FileUtils.mkdir_p(File.dirname(f_path))
          zip_file.extract(f, f_path) unless File.exist?(f_path)
        end
      end
      FileUtils.rm(zip) if remove_after
    end
  end
end

我已经将rubyzip gem包含在我的gemfile中。
gem 'rubyzip'
gem 'zip-zip'

当试图运行它时,我得到以下错误。
NameError - uninitialized constant ImportImages::Zipper::Zip:

我已经尝试了stackoverflow和其他站点提供的所有解决方案。我试着降低rubyzip的版本,现在是1.2.0,并添加require 'zip'require 'zip/zip'两者都返回加载错误。
我试着把require 'zip/filesystem'加到课堂上但是得到了
LoadError - cannot load such file -- zip/zipfilesystem

有什么解决办法吗?

最佳答案

它在寻找一个嵌套常量。将线Zip::File.open(zip) do |zip_file|改为:

::Zip::File.open(zip) do |zip_file|

它应该有用。
还要确保您需要rubygem/bundle setup。虽然在狂欢中应该已经做了。

10-05 20:31
查看更多