主厨新手在这里,也知道一点Ruby。
我不知道为什么我不能在我正在处理的样本食谱中的文件中写两次。
我的配置文件中有两个模式,我需要替换但是这样做 没有更新这两种模式;只有一个是更新而不是另一个。
ruby_block " Update Config File " do
block do
file_name = config_file
text = File.read(file_name)
File.write(file_name, text.gsub(search_value, replace_value))
File.write(file_name, text.gsub(second_search_value, second_replace_value))
end
only_if { File.exists?("#{config_file}") }
end
我知道我可以做另一个ruby_block,但我只是想知道我缺少什么来使这项工作。因为我正在编辑同一个文件,所以我只想要一个ruby_block而不是两个。
答案 0 :(得分:2)
让我们一行一行:
text = File.read(file_name)
很简单,我们**将文件内容读入text
File.write(file_name, text.gsub(search_value, replace_value))
我们在原始g
中执行了sub
小叶text
咒语,并将其写入文件
File.write(file_name, text.gsub(second_search_value, second_replace_value))
我们在原始g
中执行了sub
小叶text
咒语,并将其写入文件
当你写3时,你当然会覆盖2中的变化。
一种可能的方法是gsub两次,最后只写一次,但实际上不这样做,做这种改变是脆弱的,随时可能会中断,或者在每次运行时插入更改并打破你的配置。
让Chef用template
,