web-dev-qa-db-ja.com

Chefを使用してディレクトリ内のすべてのファイルを削除する

空でないフォルダを削除しようとしています:

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

...シェフが受け取る:

Errno::ENOTEMPTY
Directory not empty

ディレクトリ内のすべてのファイルを削除する簡単な方法はありますか?

または、空でないディレクトリを削除できるようにするための引数またはフラグ?

22
DonBecker

正しく思い出せば、recursive true属性は、空でないディレクトリを強制的に削除します。

directory LWRPのドキュメント この動作は説明されていませんが、この使用例は提供されています。

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

その後、ドキュメントは修正されて、秘密裏に次のように述べられています。

recursive
Rubyタイプ:TrueClass、FalseClass

親ディレクトリを再帰的に作成または削除します。所有者、グループ、およびモードのプロパティの場合、この属性の値はリーフディレクトリにのみ適用されます。
デフォルト値:false

彼らはまだ「recursive trueは、空でないディレクトリを削除するために必要です。この設定がないと、空ではないディレクトリを削除しようとすると、次のメッセージで失敗します:Errno::ENOTEMPTY Directory not empty "。

46
Patrick M

recursive trueオプションを追加する必要があります。このオプションは、すべてのディレクトリを削除します。