0
Попытка File.readlines проваливает сходится даже с «only_if» проверки:Chef оценка файла only_if
ruby_block 'set_archive_mode' do
only_if (File.exists?(node['ORACLE_DATABASE']['ORACLE_ADMIN'] + '/' +
node['ORACLE_DATABASE']['ORACLE_SID'] + '/database_archive_verify.test'))
if File.readlines(node['ORACLE_DATABASE']['ORACLE_ADMIN'] + '/' +
node['ORACLE_DATABASE']['ORACLE_SID'] +
'/database_archive_verify.test').grep(/^NOARCHIVELOG/).size > 0
node.run_state['archive_mode'] = 'noarchivelog'
else
node.run_state['archive_mode'] = 'archivelog'
end
end
код просто нужно установить node.run_state переходный атрибут, на основе содержимого файла. Я пробовал несколько разных подходов, что приводило к различным ошибкам. Вышеуказанный код включает «only_if», но файлы File.readlines все еще оцениваются при сближении.
Для чтения кода вы должны извлечь путь к переменной, потому что вы используете его несколько раз, вы также должны использовать File.join для пути. Для чтения файла вы можете использовать «Файл (путь) .read.include? var'. –