2011-05-13 65 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中。它的工作! –

相关问题