Je sais qu'il existe un autre fil à ce sujet, mais je suis toujours confronté à ce problème même après avoir utilisé toutes les solutions. Existe-t-il un autre moyen de générer des fichiers Zip? Puis-je utiliser les commandes du système Ubuntu?
J'ai fait
gem install rubyzip
J'ai
require 'rubygems'
require 'Zip/zip'
dans mon contrôleur
Mais je reçois toujours la même erreur - pas de fichier de ce type à charger - Zip/zip J'ai essayé avec Ruby 1.8.7 et Ruby 1.9.2 avec Rails 3.0.5 sur Ubuntu.
Pourrais-tu m'aider s'il te plaît? Merci.
Après avoir passé beaucoup de temps, j'ai finalement trouvé la partie manquante. Lors de l'utilisation de la gemme rubyzip
, je devais également exiger Zip/zip
.
Ajoutez ceci à votre Gemfile
gem 'rubyzip', :require => 'Zip/zip'
Ajouter simplement gem 'rubyzip
n'a pas fonctionné pour moi.
J'ai résolu ce problème en spécifiant la version 0.9.9 de Gemme dans Gemfile:
gem 'rubyzip', "~> 0.9.9"
L'utilisation de rubyzip (1.0.0) a provoqué une erreur. Il y a une note à ce sujet sur rubyzip gihub :
L'interface de Rubyzip a changé !!! Inutile de demander que "Zip/zip" et le préfixe Zip Dans les noms de classe soient supprimés. Si vous rencontrez des problèmes avec des gems tiers Avec ce qui nécessitait rubyzip, vous pouvez utiliser le correctif temporaire suivant:
# Place this line before your library or on the head of your Gemfile gem 'rubyzip', '< 1.0.0'
En vous appuyant sur la réponse de @ eagor, si vous souhaitez utiliser rubyzip> = 1.0 mais que vous avez besoin d'une compatibilité ascendante, ajoutez ceci à votre Gemfile:
gem 'Zip-zip'
Enregistre la mise à jour du code hérité.
Lors de la mise à niveau de rubyzip vers la version 1.0.0, remplacez require 'Zip/zip'
par require 'Zip'
.
Assurez-vous également que votre processus de décompression utilise:
Zip::ZipFile.open(self.data) do |zipfile|
ne pas
Zip::Zipfile.open(self.data) do |zipfile|
La capitale F sur ZipFile fait la différence.
Dans mon cas, il me fallait changer de
Zip::File.open(...)
à
Zip::ZipFile.open(...)
bien sûr, je dois aussi ajouter ceci à Gemfile:
gem 'rubyzip', :require => 'Zip/zip'
Pour tous ceux qui ont des problèmes avec rubyzip
et rencontrent ce fil de discussion: souvenez-vous que vous pouvez toujours utiliser Shell pour un utilitaire Zip en ligne de commande externe. Il existe un certain nombre d’utilitaires de ligne de commande gratuits que vous pouvez trouver via Google. Une fois que vous avez installé le programme Zip de votre choix en ligne de commande et que vous vous assurez qu'il se trouve bien sur le chemin du système, il vous suffit d'utiliser des backticks pour le piloter depuis Ruby. Bien sûr, cela ne fonctionnera pas pour les applications Web qui fonctionnent sur Heroku, etc.