2016-03-29 321 views
0

我正試圖在Spree插件中解壓縮一個文件。NameError - 未初始化的常量Zip

在看起來像這樣的模塊中定義瞭解壓縮方法。

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

'寶石 'rubyzip', '<1.0.0''你嘗試過嗎? –

+0

仍然收到相同的錯誤。如果試圖添加require,我得到'不能加載這樣的文件 - zip/zipfilesystem' – Aswathy

+0

https://github.com/rubyzip/rubyzip#important-note您是否看過這個 –

回答

1

它正在尋找一個嵌套的常量。換行Zip::File.open(zip) do |zip_file|用以下代碼:

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

它應該工作。 也請確保您需要rubygem/bundle setup。雖然在狂歡中它應該已經完成​​。

+2

現在我得到了'NameError - 未初始化的常量Zip' – Aswathy

2

巴貝爾的答案是正確的,但你還需要添加require 'zip'在application_controller.rb

相關問題