В рецепте Chef у меня есть ресурс bash, который в основном загружает и устанавливает программное обеспечение под названием Revolution R. Я должен сказать, что я действительно новичок в Ruby.
Это мой ресурс:
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-version. Итак, я добавил условие not_if с Dir.exists. Но ресурс все равно исполняется (и скачивается новая бесполезная копия ПО).
Есть идеи, что с этим не так?
::Dir.exists?("/tmp/RR0-#{rro_version}")
в дополнение к комментарию @IsabelHM выше. - person Tensibai   schedule 12.10.2015