25

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

我做了

 gem install rubyzip

我有

require 'rubygems'
require 'zip/zip'

在我的控制器中

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

请你帮助我好吗?谢谢。

4

7 回答 7

23

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

gem 'rubyzip',  "~> 0.9.9"

使用 ruby​​zip (1.0.0) 会导致错误。rubyzip gihub上有关于此的注释:

Rubyzip 界面变了!!!无需删除类名中的“zip/zip”和 Zip 前缀。如果您对任何需要 ruby​​zip 的第三方 gem 有疑问,您可以使用下一个临时修复:

# Place this line before your library or on the head of your Gemfile
gem 'rubyzip', '< 1.0.0'
于 2013-09-05T07:27:44.090 回答
22

在花了很多时间之后,我终于弄清楚了缺失的部分。使用rubyzipgem 时,我还必须要求zip/zip.

将此添加到您的 Gemfile

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

只是添加gem 'rubyzip对我不起作用。

于 2011-06-06T23:42:33.170 回答
17

基于@eagor 的回答,如果您想使用 ruby​​zip >= 1.0 但需要向后兼容,请将其添加到您的 Gemfile:

gem 'zip-zip'

保存更新旧代码。

于 2013-12-24T02:28:01.117 回答
7

将 ruby​​zip 升级到 1.0.0 时,更改require 'zip/zip'require 'zip'.

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

于 2013-10-21T23:07:45.177 回答
3

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

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

不是

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

ZipFile 上的大写 F 有所不同。

于 2012-08-17T12:39:23.073 回答
1

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

于 2012-05-22T15:41:05.067 回答
1

就我而言,我需要从

Zip::File.open(...)

Zip::ZipFile.open(...)

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

gem 'rubyzip', :require => 'zip/zip'
于 2013-06-20T09:10:55.560 回答