zipruby или rubyzip?

У меня здесь есть сайт ruby ​​on rails (rails 2.0.2, ruby ​​1.8.6) с установленными rubyzip и zipruby, но они конфликтуют с File.exists? метод, поэтому я хочу удалить один. Каково общее мнение о лучшем API для архивирования в будущем?

Есть ли существенные преимущества одного перед другим?


person vaughanos    schedule 02.08.2011    source источник
comment
Разве вы не можете просто использовать библиотеку Ruby zlib, которая поставляется вместе с самим Ruby?   -  person Maurício Linhares    schedule 02.08.2011
comment
Возможно, но мне нравится удобство драгоценных камней, и я не собираюсь их повторно реализовывать.   -  person vaughanos    schedule 02.08.2011
comment
@mauricio-linhares Я не думаю, что интерфейс zlib позволяет вам манипулировать zip-файлами.   -  person Kelvin    schedule 03.08.2011


Ответы (6)


Совершенно случайный ответ, поскольку я никогда не пробовал: продвигаясь вперед от вашего текущего состояния, RubyZip может быть более многообещающим. Судя по следующим (скудным) данным, RubyZip более популярен и лучше работает с новыми версиями Ruby:

RubyZip с 1.9: http://isitruby19.com/rubyzip

ZipRuby с 1.9: http://isitruby19.com/zipruby

Если у вас нет лучших доказательств, я бы выбрал rubyZip. Также см. Какая zip-библиотека хорошо работает с Ruby 1.9.2. ?. Однако есть также ответвление RubyZip (https://github.com/postmodern/rubyzip2) снова указывает на его популярность. И документы выглядят интереснее.

person Dan Rosenstark    schedule 02.08.2011
comment
спасибо, хорошие мысли жду. Я все еще пытаюсь установить, является ли один «лучше» другим, хотя общая популярность может быть достаточно хорошим показателем. - person vaughanos; 05.08.2011
comment
@vaughanos, моя общая гипотеза заключается в том, что популярность —> больше внимания и развития —> вы не в конечном итоге держите сумку на драгоценном камне, который не работает, потому что Rails или Ruby изменились. - person Dan Rosenstark; 05.08.2011
comment
rubyzip не всегда создает zip-файлы, совместимые с Windows. zipruby, похоже, не имеет этой проблемы. Недавно мы столкнулись с проблемами с rubyzip (а также с rubyzip2 и zip gem), из-за которых не удалось распаковать zip-файлы в Windows 7, которые отлично работали везде. - person Zach Dennis; 15.09.2011
comment
взгляните на blog.huangzhimin.com/2012/10/02. /avoid-using-rubyzip . В моем случае использование ZipRuby для замены файлов в существующем архиве (docx) было намного проще. С другой стороны, Известные проблемы в репозитории RubyZip советуют мне разархивировать весь docx, чтобы заменить один файл. Это, очевидно, создает новый zip без заголовков docx (он по-прежнему читается по словам, но мне нужна команда файла, чтобы определить мой файл как docx). - person Morozov; 19.10.2015
comment
Это не было проблемой с ZipRuby :). - person Morozov; 19.10.2015

Из того, что я видел, rubyzip иногда странно обрабатывает zip-файлы, потому что он по-своему обрабатывает индекс и записи zip-файла. Например, если вы используете rubyzip для распаковки файла docx и его повторной упаковки, Microsoft Word не откроет его. Но zipruby использует очень стандартную библиотеку libzip C (с небольшими изменениями) и не искажает docx. Поэтому, если вы стремитесь к совместимости форматов, я бы предложил использовать zipruby. Возможно, с тех пор, как я попробовал, rubyzip стал лучше, но вы должны попробовать сами.

person Kelvin    schedule 02.08.2011
comment
@vaughanos Если какой-либо из ответов вам полезен, пожалуйста, проголосуйте. Это побуждает людей давать лучшие ответы. Сам ваш вопрос не дает однозначного ответа, поэтому я не буду просить вас принять :) - person Kelvin; 05.08.2011
comment
Спасибо @kelvin, я новичок, поэтому у меня нет соответствующей «репутации», но я ценю ваш ответ. - person vaughanos; 08.08.2011
comment
@vaughanos извините за это - я забыл, что для голосования требуется 15 баллов. - person Kelvin; 08.08.2011
comment
Спасибо, @Кевин. Я согласен, в моей среде zipruby создает рабочие файлы .docx, а rubyzip — нет. Очень полезно - person Ray Baxter; 18.10.2012

Я много использовал гем https://github.com/toretore/zippy, и я думаю, что это довольно хорошо. Это оболочка для rubyzip, которая значительно упрощает работу с zip-файлами.

person iafonov    schedule 02.08.2011

Если вам нужно получить только один файл или несколько файлов из zip-файла, вы можете попробовать использовать Pinch, который позволит вам извлечь файл по http в ruby.

Pinch: получение файла из ZIP-файла по сети!

person epatel    schedule 02.08.2011

rubyzip не защищает паролем, в то время как zipruby делает: ссылка

person muirbot    schedule 23.10.2012

Похоже, что rubyzip может хранить неправильное несжатое значение для файла, что приводит к сбою некоторых библиотек распаковки (например, miniz) при распаковке. zipruby выглядит так, будто хранит правильный несжатый размер. Я собираюсь пойти с zipruby.

person Keith Johnston    schedule 18.08.2014