web-dev-qa-db-fra.com

Supprimer tous les fichiers d'un répertoire à l'aide de Chef

Tentative de suppression d'un dossier non vide:

directory "C:\tempdirectory" do
 action :delete
end

... chez Chef je reçois:

Errno::ENOTEMPTY
Directory not empty

Existe-t-il un moyen rapide de supprimer tous les fichiers du répertoire?

Ou un argument ou un indicateur pour me permettre de supprimer des répertoires non vides?

22
DonBecker

Si je me souviens bien, régler le recursive true l'attribut forcera la suppression des répertoires non vides.

Les documents pour le directory LWRP ne décrivent pas ce comportement, mais ils fournissent cet exemple d'utilisation:

directory "/tmp/something" do
  recursive true
  action :delete
end

Les documents ont depuis été modifiés pour énoncer de manière cryptique:

recursive
Types de rubis: TrueClass, FalseClass

Créez ou supprimez récursivement les répertoires parents. Pour les propriétés propriétaire, groupe et mode, la valeur de cet attribut s'applique uniquement au répertoire feuille.
Valeur par défaut: false.

Ils n'arrêtent pas de dire "recursive true est requis pour supprimer les répertoires non vides. Sans ce paramètre, la tentative de suppression d'un répertoire non vide échouera avec le message: Errno::ENOTEMPTY Directory not empty ".

46
Patrick M

Vous devez ajouter le recursive true option. Cette option supprimera tous les répertoires.