2015-10-09 5 views
0

В рецепте шеф-повара У меня есть ресурс 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. Но ресурс выполняется в любом случае (и загружается новая бесполезная копия программного обеспечения).

Любая идея, что не так с этим?

+0

Не уверен, что я вижу это правильно, но имя папки «RRO», похоже, записано с нулем в конце как RR0 в инструкции охраны «:: Dir.exists?» («/ Tmp/RR0-» + rro_version) –

+0

Просто используйте интерполяцию, как и в остальной части кода: ':: Dir.exists? ("/Tmp/RR0 - # {rro_version} ")' в дополнение к комментарию @IsabelHM выше. – Tensibai

+1

извините за опечатку. Но ошибка была на самом деле только здесь, а не в реальном коде. Тем не менее, я смог найти ошибку: это был очень глупый вопрос разрешения –

ответ

2

Я предлагаю проверить ark cookbook для обработки пакетов удаленных архивов.

include_recipe "ark" 

ark 'RevoMath' do 
    url 'https://mran.revolutionanalytics.com/install/RevoMath-1.0.1.tar.gz' 
end 

Который установит содержание смолы пакет в каталог /usr/local/RevoMath-1.0.1. Эти значения по умолчанию могут быть переопределены.

+0

tnx! это определенно более идиоматическое решение, а не мое. –