【问题标题】:Using rubyzip error - no such file to load -- zip/zip使用 ruby​​zip 错误 - 没有要加载的文件 - zip/zip
【发布时间】:2011-05-13 20:41:14
【问题描述】:

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

我做到了

 gem install rubyzip

我有

require 'rubygems'
require 'zip/zip'

在我的控制器中

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

你能帮帮我吗?谢谢。

【问题讨论】:

  • 您找到解决方案了吗?我也有同样的情况。谢谢
  • 不,我仍在寻找解决方案,它适用于 irb shell 但不适用于 rails。
  • 确保您的 Gemfile 中有 gem 'rubyzip'。此外,这取决于您使用的 ruby​​zip 的功能,但除了上述功能之外,您可能还需要使用 require 'zip/zipfilesystem'
  • gem 'rubyzip', :require => 'zip/zip' 在 Gemfile 工作:) 终于!谢谢埃里克

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


【解决方案1】:

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

gem 'rubyzip',  "~> 0.9.9"

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

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

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

【讨论】:

  • 有趣的是,在 1.0.0 发布之前很久就提出了这个问题
  • 谢谢!节省了我的时间!
  • 谢谢!这帮助我解决了添加 gtfs gem 时引起的错误:/home/kobilya/.rvm/gems/ruby-2.1.0/gems/gtfs-0.2.2/lib/gtfs/source.rb:3:in 'require': cannot load such file -- zip/zip (LoadError)
【解决方案2】:

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

将此添加到您的 Gemfile 中

gem 'rubyzip', :require =&gt; 'zip/zip'

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

【讨论】:

  • 我在 Gemfile 中更改为 ... :require => 'zip' 并在应用程序代码中要求 'zip' 后对我有用
【解决方案3】:

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

gem 'zip-zip'

保存更新旧代码。

【讨论】:

    【解决方案4】:

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

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

    【讨论】:

      【解决方案5】:

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

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

      不是

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

      ZipFile 上的大写 F 有所不同。

      【讨论】:

        【解决方案6】:

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

        【讨论】:

          【解决方案7】:

          在我的情况下,我需要改变

          Zip::File.open(...)
          

          Zip::ZipFile.open(...)
          

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

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

          【讨论】:

            猜你喜欢
            • 2013-09-15
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-04-28
            • 2012-08-18
            • 1970-01-01
            • 1970-01-01
            • 2016-09-15
            相关资源
            最近更新 更多