2012-11-23 15 views

答えて

9

使用ruby_blockと使用内部:: File.Rename(SRC、DSTを削除

  • をcreate_if_missing
  • を作成します。私は唯一のが見つかっchef doc

    )。シェフのフレームワークにはファイル名の変更がありません(少なくとも0.10.18まででした)。ただ、たとえば

    ruby_block "Rename file" do 
        block do 
        ::File.rename(new_resource.src,new_resource.dst) 
        end 
    end 
    
  • +2

    私はちょっと疑問に思っています...これは偶然でしょうか?つまり、これが2回目に実行され、 'new_resource.src'がもう存在しないとどうなりますか? – cassianoleal

    +1

    これは失敗します。これは単なる例です。あなたはディスクからのファイルについて自分自身を保証する必要があります。 – Sacx

    +1

    あなただけのガードを置くだろうか? 'only_if {File.exists?(new_resource.src)} 'のように' –

    1

    複数のファイルの名前を変更する必要がある場合は別のオプション。リソースがすでに実行されたかどうかを確認します。

    ruby_block "Rename file" do 
        block do 
        ::Dir.glob("*/*.src").each {|i| File.rename(i, i.gsub(/(.*).src/,'\\1.dst'))}; 
        end 
        not_if {File.exists?("new_resource.dst")} 
    end 
    
    関連する問題