Использование ошибки rubyzip - нет такого файла для загрузки - zip / zip - PullRequest
25 голосов
/ 14 мая 2011

Я знаю, что есть другая тема на эту тему, но я все еще сталкиваюсь с этой проблемой даже после использования всех решений. Есть ли другой способ для создания ZIP-файлов? Могу ли я использовать системные команды Ubuntu?

Я сделал

 gem install rubyzip

У меня есть

require 'rubygems'
require 'zip/zip'

в моем контроллере

Но я все еще получаю ту же ошибку - нет такого файла для загрузки - zip / zip Я попробовал как с ruby ​​1.8.7, так и с ruby ​​1.9.2 с рельсами 3.0.5 на Ubuntu

Не могли бы вы мне помочь? Спасибо.

Ответы [ 7 ]

23 голосов
/ 05 сентября 2013

Я исправил эту проблему, указав версию gem 0.9.9 в Gemfile:

gem 'rubyzip',  "~> 0.9.9"

Использование rubyzip (1.0.0) вызвало ошибку.Есть примечание об этом на rubyzip gihub :

Изменен интерфейс Rubyzip !!!Нет необходимости требовать "zip / zip" и префикс Zip в именах классов удалены.Если у вас есть проблемы с какими-либо сторонними драгоценными камнями, для чего требуется rubyzip, вы можете использовать следующее временное исправление:

# Place this line before your library or on the head of your Gemfile
gem 'rubyzip', '< 1.0.0'
22 голосов
/ 07 июня 2011

Потратив много времени, я наконец выяснил недостающую часть.При использовании драгоценного камня rubyzip мне также требовалось zip/zip.

Добавить это в свой Gemfile

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

Просто добавление gem 'rubyzip неработа для меня.

18 голосов
/ 24 декабря 2013

Основываясь на ответе @ eagor, если вы хотите использовать rubyzip> = 1.0, но вам нужна обратная совместимость, добавьте это в свой Gemfile:

gem 'zip-zip'

Сохраняет обновление устаревшего кода.

7 голосов
/ 22 октября 2013

При обновлении rubyzip до 1.0.0 измените require 'zip/zip' на require 'zip'.

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

3 голосов
/ 17 августа 2012

Также убедитесь, что в процессе распаковки используются:

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

, а не

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

Заглавная буква F в ZipFile имеет значение.

1 голос
/ 20 июня 2013

В моем случае мне нужно было перейти с

Zip::File.open(...)

до

Zip::ZipFile.open(...)

Конечно, мне нужно добавить это в Gemfile:

gem 'rubyzip', :require => 'zip/zip'
1 голос
/ 22 мая 2012

Для всех, кто имеет проблемы с rubyzip и сталкивался с этой темой: помните, что вы всегда можете использовать внешнюю утилиту zip для командной строки.Существует ряд бесплатных утилит командной строки, которые вы можете найти через Google.После того, как вы установили предпочитаемую zip-программу из командной строки и убедились, что она находится в системном пути, просто используйте обратные галочки для ее запуска из Ruby.Конечно, это не будет работать для веб-приложений, работающих на Heroku и т. Д.

...