NameError - 未初始化的常量 Zip

Asw*_*thy 3 ruby zip ruby-on-rails unzip rubyzip

我正在尝试解压缩 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
Run Code Online (Sandbox Code Playgroud)

我已将 ruby​​zip gem 包含在我的 Gemfile 中。

gem 'rubyzip'
gem 'zip-zip'
Run Code Online (Sandbox Code Playgroud)

当尝试运行它时,我收到以下错误。

NameError - uninitialized constant ImportImages::Zipper::Zip:
Run Code Online (Sandbox Code Playgroud)

我已经尝试了 stackoverflow 和其他网站提供的所有解决方案。我尝试降级 ruby​​zip 的版本(现在为 1.2.0)并添加require 'zip'require 'zip/zip'。两者都返回加载错误。

我尝试添加require 'zip/filesystem'到班级中。但得到了

LoadError - cannot load such file -- zip/zipfilesystem
Run Code Online (Sandbox Code Playgroud)

有什么解决办法吗?

mon*_*lls 6

以这种方式将 ruby​​zip 包含在 gem 文件中:

gem 'rubyzip', require: 'zip'
Run Code Online (Sandbox Code Playgroud)

看到这个问题