2016-12-08 2 views
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 все еще оцениваются при сближении.

+0

Для чтения кода вы должны извлечь путь к переменной, потому что вы используете его несколько раз, вы также должны использовать File.join для пути. Для чтения файла вы можете использовать «Файл (путь) .read.include? var'. –

ответ

Смежные вопросы