[英]NameError (uninitialized constant Unzipper::Zip) but only on Heroku deploy (Rails)
[英]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
我已将rubyzip gem包含在我的Gemfile中。
gem 'rubyzip'
gem 'zip-zip'
尝试运行它时,出现以下错误。
NameError - uninitialized constant ImportImages::Zipper::Zip:
我已经尝试了stackoverflow和其他站点中提供的所有解决方案。 我尝试降级rubyzip的版本(现在是1.2.0),并添加require'zip require 'zip'
或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
。 尽管应该大礼包,但它应该已经完成了。
Babar的答案是正确的,但是您还需要在application_controller.rb中添加require 'zip'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.