我正在尝试解压缩我的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
我在我的Gemfile中包含了rubyzip gem。
gem 'rubyzip'
gem 'zip-zip'
尝试运行时,我收到以下错误。
NameError - uninitialized constant ImportImages::Zipper::Zip:
我已经尝试过stackoverflow和其他网站中提供的每个解决方案。我尝试降级现在为1.2.0的rubyzip版本并添加require 'zip'
或require 'zip/zip'
。两者都返回加载错误。
我尝试在课程中添加require 'zip/filesystem'
。但得到了
LoadError - cannot load such file -- zip/zipfilesystem
对此有何解决方案?
答案 0 :(得分:3)
它正在寻找嵌套的Constant。使用以下内容更改行Zip::File.open(zip) do |zip_file|
:
::Zip::File.open(zip) do |zip_file|
它应该工作。
另外,请确保您需要rubygem
/ bundle setup
。虽然在狂欢中它应该已经完成了。
答案 1 :(得分:3)
Babar的回答是正确的,但您还需要在application_controller.rb中添加require 'zip'
答案 2 :(得分:2)