Question

Je sais qu'il y a un autre fil sur 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 postaux? Puis-je utiliser des commandes système Ubuntu?

Je l'ai fait

 gem install rubyzip

j'ai

require 'rubygems'
require 'zip/zip'

dans mon contrôleur

Mais j'obtiens toujours la même erreur - aucun fichier de ce type à charger - zip / zip que 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.

Était-ce utile?

La solution 2

Après avoir passé beaucoup de temps, j'ai finalement compris la partie manquante. Lorsque vous utilisez le rubyzip joyau, je devais aussi exiger zip/zip.

Ajoutez ceci à votre gemfile

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

Ajouter juste gem 'rubyzip N'a pas travaillé pour moi.

Autres conseils

J'ai résolu ce problème en spécifiant GEM Version 0.9.9 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 Rubyzip a changé !!! Pas besoin de faire besoin de "zip / zip" et de préfixe zip dans les noms de classe supprimés. Si vous avez des problèmes avec des joyaux tiers, ce qui nécessite Rubyzip, vous pouvez utiliser la prochaine correction temporaire:

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

S'appuyant sur la réponse de @ Eagor, si vous souhaitez utiliser RubyZip> = 1.0 mais avez besoin de compatibilité en arrière, ajoutez ceci à votre gemfile:

gem 'zip-zip'

Enregistre la mise à jour du code hérité.

Lors de la mise à niveau de Rubyzip à 1.0.0, changez require 'zip/zip' à require 'zip'.

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

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 une différence.

Pour quiconque a des problèmes avec rubyzip Et apparaît sur ce fil: N'oubliez pas que vous pouvez toujours coller à un utilitaire de zip de 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é votre programme zip de ligne de commande de choix et assurez-vous qu'il est sur le chemin du système, utilisez simplement des backticks pour le conduire à partir de Ruby. Bien sûr, cela ne fonctionnera pas pour des applications Web qui fonctionnent sur Heroku, etc.

Dans mon cas, j'avais besoin de changer

Zip::File.open(...)

à

Zip::ZipFile.open(...)

Bien sûr, je dois également l'ajouter à Gemfile:

gem 'rubyzip', :require => 'zip/zip'
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top