it-swarm.com.de

Verwenden des Rubyzip-Fehlers - keine zu ladende Datei - Zip/Zip

Ich weiß, dass es einen anderen Thread zu diesem Thema gibt, aber ich habe immer noch dieses Problem, auch wenn ich alle Lösungen verwendet habe. Gibt es eine andere Möglichkeit, Zip-Dateien zu erstellen? Kann ich Ubuntu-Systembefehle verwenden?

Ich tat

 gem install rubyzip

Ich habe

require 'rubygems'
require 'Zip/zip'

in meinem Controller

Aber ich bekomme immer noch den gleichen Fehler - keine solche Datei zu laden - Zip/zip Ich habe sowohl mit Ruby 1.8.7 als auch mit Ruby 1.9.2 mit Rails 3.0.5 unter Ubuntu versucht

Kannst du mir bitte Helfen? Vielen Dank.

25
coredump

Nachdem ich viel Zeit verbracht hatte, fand ich den fehlenden Teil heraus. Bei der Verwendung des Gems rubyzip musste ich auch Zip/zip angeben.

Fügen Sie dies Ihrem Gemfile hinzu

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

Das Hinzufügen von gem 'rubyzip hat bei mir nicht funktioniert.

22
coredump

Ich habe dieses Problem behoben, indem ich die Gem-Version 0.9.9 in Gemfile angegeben habe:

gem 'rubyzip',  "~> 0.9.9"

Die Verwendung von rubyzip (1.0.0) hat einen Fehler verursacht. Dazu gibt es eine Notiz auf rubyzip gihub :

Rubyzip-Schnittstelle geändert !!! Es ist nicht erforderlich, "Zip/zip" und das Zip-Präfix in Klassennamen zu entfernen. Wenn Sie Probleme mit Edelsteinen von Drittanbietern haben, können Sie den nächsten temporären Fix verwenden:

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

Aufbauend auf der Antwort von @ eagor, wenn Sie rubyzip> = 1.0 verwenden möchten und Abwärtskompatibilität benötigen, fügen Sie dies Ihrem Gemfile hinzu:

gem 'Zip-zip'

Speichert das Aktualisieren älterer Codes.

18
Zubin

Wenn Sie rubyzip auf 1.0.0 aktualisieren, ändern Sie require 'Zip/zip' in require 'Zip'.

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

7
mmell

Stellen Sie außerdem sicher, dass Ihr Entpackungsvorgang Folgendes verwendet:

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

nicht

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

Das große F auf ZipFile macht einen Unterschied.

3
Chris Shanks

In meinem Fall musste ich wechseln

Zip::File.open(...)

zu

Zip::ZipFile.open(...)

natürlich muss ich dies auch Gemfile hinzufügen:

gem 'rubyzip', :require => 'Zip/zip'
1
Artur Małecki

Für alle anderen Personen, die Probleme mit rubyzip haben und auf diesen Thread stoßen: Denken Sie daran, dass Sie immer ein externes Befehlszeilen-Zip-Dienstprogramm verwenden können. Es gibt eine Reihe kostenloser Befehlszeilenprogramme, die Sie bei Google finden können. Wenn Sie das Befehlszeilen-Zip-Programm der Wahl installiert haben und sicherstellen, dass es sich im Systempfad befindet, verwenden Sie einfach Backticks, um es von Ruby aus zu steuern. Dies funktioniert natürlich nicht für Webanwendungen, die auf Heroku usw. ausgeführt werden.

1
Alex D