В рецепте шеф-повара У меня есть ресурс bash, который в основном загружает и устанавливает программное обеспечение под названием Revolution R. Я должен сказать, что я действительно noob в Ruby.Как проверить, существует ли каталог в рецепте шеф-повара NOT_IF?
Это мой ресурс:
bash 'download_revolutionr' do
code <<-EOH
mkdir -p /tmp/RRO-#{rro_version}
wget https://mran.revolutionanalytics.com/install/RRO-#{rro_version}-#{rro_os_platform}-#{rro_os_version}.x86_64.deb -P /tmp/RRO-#{rro_version}
wget https://mran.revolutionanalytics.com/install/RevoMath-#{rro_version}.tar.gz -P /tmp/RRO-#{rro_version}
tar -xzf /tmp/RRO-#{rro_version}/RevoMath-#{rro_version}.tar.gz -C /tmp/RRO-#{rro_version}
EOH
not_if { ::Dir.exists?("/tmp/RR0-" + rro_version) }
end
Моя идея заключается в том, чтобы не загружать программное обеспечение, если уже есть на диске внутри каталога/TMP/RRO-версии. Таким образом, я добавил условие not_if с Dir.exists. Но ресурс выполняется в любом случае (и загружается новая бесполезная копия программного обеспечения).
Любая идея, что не так с этим?
Не уверен, что я вижу это правильно, но имя папки «RRO», похоже, записано с нулем в конце как RR0 в инструкции охраны «:: Dir.exists?» («/ Tmp/RR0-» + rro_version) –
Просто используйте интерполяцию, как и в остальной части кода: ':: Dir.exists? ("/Tmp/RR0 - # {rro_version} ")' в дополнение к комментарию @IsabelHM выше. – Tensibai
извините за опечатку. Но ошибка была на самом деле только здесь, а не в реальном коде. Тем не менее, я смог найти ошибку: это был очень глупый вопрос разрешения –