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.
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.
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'
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.
Wenn Sie rubyzip auf 1.0.0 aktualisieren, ändern Sie require 'Zip/zip'
in require 'Zip'
.
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.
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'
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.