2011-05-13 81 views
25

我知道這個問題上有另一個線程,但即使使用所有解決方案後,我仍然面臨這個問題。有沒有其他的方式來生成zip文件?我可以使用Ubuntu系統命令嗎?使用rubyzip錯誤 - 沒有這樣的文件加載 - zip/zip

我做

gem install rubyzip 

require 'rubygems' 
require 'zip/zip' 

在我的控制器

,但我仍然得到同樣的錯誤 - 沒有這樣的文件加載 - 拉鍊/拉鍊 我試着與紅寶石1.8.7和紅寶石1.9.2與軌道3.0.5在Ubuntu上

你可以p租賃幫助我?謝謝。

+0

你有沒有找到解決方案?我處於同樣的情況。謝謝 –

+0

不,我仍然在尋找解決方案,它在irb shell中工作,但沒有使用rails。 – coredump

+0

確保你的Gemfile中有'gem'rubyzip''。另外,它取決於你正在使用的rubyzip的功能,但除了上面的內容外,你可能還需要使用'require'zip/zipfilesystem''。 –

回答

22

花了很多時間後,我終於想出了缺失的部分。當使用rubyzip寶石時,我也必須要求zip/zip

添加到您的Gemfile

gem 'rubyzip', :require => 'zip/zip'

只是增加gem 'rubyzip並沒有爲我工作。

+2

這在我們的案例中不起作用。 –

+0

在我更改爲...之後爲我工作:require =>'zip'在Gemfile中,並且在應用程序代碼中需要'zip' – Straff

1

對於rubyzip存在問題的任何人,遇到以下線索:請記住,您始終可以使用外部命令行zip實用程序。您可以通過Google找到許多免費的命令行工具。一旦你安裝了選擇的命令行壓縮程序,並確保它在系統路徑中,只需使用反引號從Ruby中驅動它。當然,這不會對它們在Heroku上運行的Web應用程序等工作

3

另外,還要確保你的解壓縮過程中使用:

Zip::ZipFile.open(self.data) do |zipfile| 

Zip::Zipfile.open(self.data) do |zipfile| 

的大寫F在ZipFile上有所作爲。

1

在我來說,我需要從

Zip::File.open(...) 

Zip::ZipFile.open(...) 
當然

我還需要它添加到Gemfile中改變:

gem 'rubyzip', :require => 'zip/zip' 
23

我解決了這個問題,通過在Gemfile中指定寶石版本0.9.9:

gem 'rubyzip', "~> 0.9.9" 

使用rubyzip(1.0.0)導致錯誤。有關於此的一個注意事項rubyzip gihub

Rubyzip界面已更改!不需要在需要刪除的類名稱中加上「zip/zip」和Zip 前綴。如果您有任何第三方 寶石什麼需要rubyzip您可以使用下一個臨時的解決辦法的問題:

# Place this line before your library or on the head of your Gemfile 
gem 'rubyzip', '< 1.0.0' 
+1

您是對的rubyzip(1.0.0)會導致錯誤。 –

+0

有趣的是,在1.0.0發佈之前,這個問題被問及很久 – eagor

+1

謝謝!節省了我的時間! –

18
上@ eagor的回答,

大廈,如果你想使用rubyzip> = 1.0,但需要向後兼容性添加到您的Gemfile:

gem 'zip-zip' 

保存更新舊代碼。

+2

gem install'zip-zip'爲我工作 –

+0

我將它添加到Gemfile中。它的工作! –

相關問題