2009-10-16 7 views
0

J'essaie d'utiliser RubyZip pour empaqueter certains fichiers. En ce moment j'ai une méthode qui zippe avec bonheur sur des répertoires et sous-répertoires particuliers.RubyZip - les fichiers de différents répertoires ont un chemin dans le zip

def zip_directory(zipfile) 
    Dir["#{@directory_to_zip}/**/**"].reject{|f| reject_file(f)}.each do |file_path| 
     file_name = file_path.sub(@directory_to_zip+'/',''); 
     zipfile.add(file_name, file_path) 
    end 
end 

Cependant, je souhaite inclure un fichier provenant d'un dossier complètement différent. J'ai la méthode suivante pour résoudre ce:

def zip_additional(zipfile) 
    additional_files.reject{|f| reject_file(f)}.each do |file_path| 
     file_name = file_path.split('\\').last 
     zipfile.add(file_name, file_path) 
    end 
end 

Bien que le fichier est ajouté, il copie également la structure de répertoire au lieu de placer le fichier à la racine du dossier. C'est vraiment agaçant et cela rend le travail plus difficile.

Comment puis-je contourner le problème?

Merci

Ben

Répondre

1

il est paramètre pour inclure (ou exclure) le chemin complet pour les bibliothèques zip, vérifiez que la mise en

+0

Je n'arrive pas à voir quoi que ce soit dans le rdoc - http://rubyzip.sourceforge.net/ –

+0

Je ne suis pas sûr de rubyzip, mais je pense que c'est le problème. bibliothèques standard zip ont ce paramètre (inclure le chemin complet), peut-être cet article sera de toute aide ?: http://info.michael-simons.eu/2008/01/21/using-rubyzip-to-create-zip -files-on-the-fly/ il y a une note ci-dessous le code concernant la façon dont le chemin est créé – dusoft

0

s'avère que c'était parce que le nom de fichier avait le chemin de traction dans. Ma division n'a pas fonctionné comme le chemin a utilisé un/au lieu d'un. Avec le chemin supprimé du nom de fichier, cela a juste fonctionné.

Questions connexes