使用rubyzip错误 - 没有这样的文件加载 - zip / zip

时间:2011-05-13 20:41:15

标签: ruby-on-rails ruby-on-rails-3 rubygems rubyzip

我知道这个主题还有另一个主题,但即使使用了所有解决方案后我仍然面临这个问题。有没有其他方法来生成zip文件?我可以使用Ubuntu系统命令吗?

我做了

 gem install rubyzip

我有

require 'rubygems'
require 'zip/zip'

在我的控制器中

但我仍然得到同样的错误 - 没有这样的文件加载 - zip / zip 我尝试使用ruby 1.8.7和ruby 1.9.2在Ubuntu上使用rails 3.0.5

你能帮帮我吗?感谢。

7 个答案:

答案 0 :(得分:23)

我通过在Gemfile中指定gem版本0.9.9修复了这个问题:

gem 'rubyzip',  "~> 0.9.9"

使用rubyzip(1.0.0)导致错误。在rubyzip gihub上有关于此的说明:

  

Rubyzip界面改变了!无需“zip / zip”和Zip   删除了类名中的前缀。如果您与任何第三方有任何问题   gems什么需要rubyzip你可以使用下一个临时修复:

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

答案 1 :(得分:22)

花了很多时间后,我终于找到了缺失的部分。使用rubyzip gem时,我还需要zip/zip

将此添加到您的Gemfile

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

添加gem 'rubyzip对我来说无效。

答案 2 :(得分:18)

建立@ eagor的答案,如果您想使用rubyzip&gt; = 1.0但需要向后兼容,请将此添加到您的Gemfile中:

gem 'zip-zip'

保存更新遗留代码。

答案 3 :(得分:7)

将rubyzip升级到1.0.0时,将require 'zip/zip'更改为require 'zip'

https://stackoverflow.com/a/19506372/567399

答案 4 :(得分:3)

还要确保解压缩过程使用:

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

不是

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

ZipFile上的资本F有所不同。

答案 5 :(得分:1)

对于遇到rubyzip问题且遇到此线程的任何其他人:请记住,您始终可以使用外部命令行zip实用程序。您可以通过Google找到许多免费的命令行实用程序。一旦你安装了你选择的命令行zip程序并确保它在系统路径上,只需使用反引号从Ruby中驱动它。当然,这对于在Heroku等上运行的Web应用程序不起作用。

答案 6 :(得分:1)

在我的情况下,我需要从

改变
Zip::File.open(...)

Zip::ZipFile.open(...)

当然我还需要将它添加到Gemfile:

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