如果存在,则使用 chef 更改文件中的文本,如果不存在,则添加

change text in file with chef if exists and add if doesn't

我知道厨师可以在模式不存在时向文件添加一行

http://www.rubydoc.info/gems/chef/Chef/Util/FileEdit:insert_line_if_no_match

如果模式确实存在,您甚至可以更新文件中的一行

http://www.rubydoc.info/gems/chef/Chef/Util/FileEdit:search_file_replace_line

是否有方便的方法来添加(如果不存在)并替换(如果存在)?

为什么不自己写一个小帮手呢?

def update_or_insert(regex, newline)
  search_file_replace_line(regex, newline) || insert_line_if_no_match(regex, newline)
end

如果它确实找到任何要替换的东西,这将 return 进行更改,或者如果它发现需要添加行,return 进行更改。