2012-11-23 29 views

回答

9

使用ruby_block和內部使用:: File.Rename(SRC,DST )。廚師框架沒有文件重命名(或者至少在0.10.18之前沒有)。

只是一個例子:

ruby_block "Rename file" do 
    block do 
    ::File.rename(new_resource.src,new_resource.dst) 
    end 
end 
+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