使用 ruby​​zip 错误 - 没有要加载的文件 - zip/zip

发布于 2024-11-07 11:22:37 字数 346 浏览 1 评论 0原文

我知道关于这个主题还有另一个线程,但即使在使用所有解决方案后我仍然面临这个问题。还有其他方法可以生成 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

你能帮我吗?谢谢。

I know there is another thread on this subject but I still face this problem even after using all solutions. Is there any other way to generate zip files? Can i use Ubuntu system commands?

I did

 gem install rubyzip

I have

require 'rubygems'
require 'zip/zip'

in my controller

But i still get the same error - no such file to load -- zip/zip
I tried with both ruby 1.8.7 and ruby 1.9.2 with rails 3.0.5 on Ubuntu

Could you please help me? Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

泼猴你往哪里跑 2024-11-14 11:22:37

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

gem 'rubyzip',  "~> 0.9.9"

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

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

# 将此行放在您的库之前或 Gemfile 的开头
gem 'rubyzip', '<; 1.0.0'

I fixed this problem by specifying gem version 0.9.9 in Gemfile:

gem 'rubyzip',  "~> 0.9.9"

Using rubyzip (1.0.0) caused an error. There's a note about this on rubyzip gihub:

Rubyzip interface changed!!! No need to do require "zip/zip" and Zip
prefix in class names removed. If you have issues with any third-party
gems what required rubyzip you can use next temporary fix:

# Place this line before your library or on the head of your Gemfile
gem 'rubyzip', '< 1.0.0'
几度春秋 2024-11-14 11:22:37

花了很多时间,我终于弄清楚了缺失的部分。当使用rubyzip gem时,我还必须要求zip/zip

将其添加到您的 Gemfile

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

仅添加 gem 'rubyzip 对我来说不起作用。

After spending lot of time, I finally figured out the missing part. When using the rubyzip gem, I also had to require zip/zip.

Add this to your Gemfile

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

Just adding gem 'rubyzip did not work for me.

与酒说心事 2024-11-14 11:22:37

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

gem 'zip-zip'

保存更新遗留代码。

Building on @eagor's answer, if you'd like to use rubyzip >= 1.0 but need backwards compatibility add this to your Gemfile:

gem 'zip-zip'

Saves updating legacy code.

弥枳 2024-11-14 11:22:37

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

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

When upgrading rubyzip to 1.0.0 change require 'zip/zip' to require 'zip'.

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

天赋异禀 2024-11-14 11:22:37

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

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

而不是

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

ZipFile 上的大写 F 会有所不同。

Also make sure that your unzipping process uses:

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

not

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

The capital F on ZipFile makes a difference.

黑白记忆 2024-11-14 11:22:37

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

For anyone else who has problems with rubyzip and comes across this thread: remember that you can always shell out to an external command-line zip utility. There are a number of free command-line utilities which you can find through Google. Once you install your command-line zip program of choice and make sure it is on the system path, just use backticks to drive it from within Ruby. Of course, this won't work for web applications which are running on Heroku, etc.

北风几吹夏 2024-11-14 11:22:37

就我而言,我需要从 更改为

Zip::File.open(...)

当然

Zip::ZipFile.open(...)

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

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

In my case I was needed to change from

Zip::File.open(...)

to

Zip::ZipFile.open(...)

of course I need to also add this to Gemfile:

gem 'rubyzip', :require => 'zip/zip'
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文