我知道这个主题还有另一个主题,但即使使用了所有解决方案后我仍然面临这个问题。有没有其他方法来生成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
你能帮帮我吗?感谢。答案 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'
。
答案 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'