NameError - 未初始化的常量 Zip
NameError - uninitialized constant Zip
我正在尝试解压缩我的 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:
我已经尝试了 Whosebug 和其他网站提供的所有解决方案。我尝试将 rubyzip 版本降级为 1.2.0,并添加 require 'zip'
或 require 'zip/zip'
。两者都返回加载错误。
我尝试将 require 'zip/filesystem'
添加到 class。但是得到了
LoadError - cannot load such file -- zip/zipfilesystem
有什么解决办法吗?
它正在寻找一个嵌套的常量。将 Zip::File.open(zip) do |zip_file|
行更改为以下内容:
::Zip::File.open(zip) do |zip_file|
应该可以。
还要确保您需要 rubygem
/bundle setup
。虽然在狂欢中它应该已经完成了。
Babar的回答是正确的,但是你还需要在application_controller.rb
中加上require 'zip'
以这种方式在 gem 文件中包含 rubyzip:
gem 'rubyzip', require: 'zip'
我正在尝试解压缩我的 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:
我已经尝试了 Whosebug 和其他网站提供的所有解决方案。我尝试将 rubyzip 版本降级为 1.2.0,并添加 require 'zip'
或 require 'zip/zip'
。两者都返回加载错误。
我尝试将 require 'zip/filesystem'
添加到 class。但是得到了
LoadError - cannot load such file -- zip/zipfilesystem
有什么解决办法吗?
它正在寻找一个嵌套的常量。将 Zip::File.open(zip) do |zip_file|
行更改为以下内容:
::Zip::File.open(zip) do |zip_file|
应该可以。
还要确保您需要 rubygem
/bundle setup
。虽然在狂欢中它应该已经完成了。
Babar的回答是正确的,但是你还需要在application_controller.rb
中加上require 'zip'
以这种方式在 gem 文件中包含 rubyzip:
gem 'rubyzip', require: 'zip'