Подтвердить что ты не робот

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

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

Я сделал

 gem install rubyzip

У меня

require 'rubygems'
require 'zip/zip'

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

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

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

4b9b3361

Ответ 1

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

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

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

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

Ответ 2

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

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'

Ответ 3

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

gem 'zip-zip'

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

Ответ 5

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

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

not

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

Столица F на ZipFile имеет значение.

Ответ 6

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

Ответ 7

В моем случае мне нужно было изменить

Zip::File.open(...)

к

Zip::ZipFile.open(...)

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

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