2017-11-08 18 views
0

フォルダ内のファイル数を取得し、その数に基づいてさらにリソースをスキップまたは実行しようとしています。Chef:フォルダ内のファイル数をカウントする

file 'C:\Users\Desktop\Chef-file\count.txt' do 
      dir = 'C:\Users\Desktop\Chef-Commands' 
       count = Dir[File.join(dir, '**', '*')].count { |file| File.file?(file)} 
       content count 
      end 

しかし、次のエラー

Chef::Exceptions::ValidationFailed: Property content must be one of: String, nil! You passed 0. 

を取得私はシェフにはかなり新しいですとルビーはそう/修正この問題を解決する方法を疑問に思いました。

カウントが取得されたら、他のリソースでその値をチェックする方法は?

また、これが正しいアプローチであるかどうかを知りたいです。

おかげ

答えて

1

count0(Fixnumか)のようです。

あなたは試すたいことがあります。

file 'C:\Users\Desktop\Chef-file\count.txt' do 
    dir = 'C:\Users\Desktop\Chef-Commands' 
    count = Dir[File.join(dir, '**', '*')].count { |file| File.file?(file)} 
    content count.to_s 
end 
+2

が、これはコンパイル時にチェックし、また時間を収束する点に注意してください。 – coderanger

+0

これはうまくいったが、常にファイル数として0を与える。それを理解する必要がある。 – Manas

関連する問題