Я пытаюсь найти наличие следующей строки в файле;
default_mimetype = «text / html»
и затем, если найдены как незакомментированные как выше, то закомментируйте это так;
; default_mimetype = «text / html»
В настоящее время у меня есть следующий рецепт шеф-повара;
ruby_block "php_ini" do
block do
file = Chef::Util::FileEdit.new("/etc/php.ini")
file.search_file_replace_line(/default_mimetype = "text/html"/, ';default_mimetype = "text/html"')
file.write_file
end
end
service "apache2" do
action :restart
end
но строка file_search_replace_line вызывает синтаксическую ошибку (вероятно, из-за & ; ) Как мне написать эту строку, чтобы она делала то, что я хочу?
Управлять таким файлом не рекомендуется, так как он допускает все виды неконвергентного поведения и, как правило, очень трудно рассуждать. Лучший подход заключается в использовании template
ресурс, позволяющий полностью контролировать содержимое файла, а это означает, что вы всегда знаете, что в нем будет, а не зависите от того, что было там до запуска Chef (обычно это файл, предоставленный дистрибутивом).
Что касается специфики, то проблема заключается в /
в text/html
сделай это text\/html
,
Других решений пока нет …