2016-03-30 1 views
0

Какова цель атрибута cwd в ресурсе скрипта? По какой-то причине работает первый блок работает, но второй не работает по назначению (то есть клонировать Git репо под /var/apps)Назначение шеф-повара атрибута cwd на ресурсе скрипта

script 'clone_repo' do 
    interpreter "bash" 
    code <<-EOH 
    cd /var/apps 
    git clone https://gitlab.com/dsura/test-go-web-app.git 
    EOH 
    not_if { ::File.directory?("/var/apps/test-go-web-app") } 
end 

и

script 'clone_repo' do 
    interpreter "bash" 
    cwd ::File.dirname('/var/apps') 
    code <<-EOH 
    git clone https://gitlab.com/dsura/test-go-web-app.git 
    EOH 
    not_if { ::File.directory?("/var/apps/test-go-web-app") } 
end 

ответ

1

Я не думаю, что это File.directory метод, который существует, но если вы имеете в виду cwd '/var/apps', то нет никакой разницы. Он устанавливает рабочий каталог перед запуском подпроцесса (ака скрипта). Это больше для ресурса execute, где вы, возможно, не захотите использовать cd, но script наследует от execute, так что он просто подходит для езды.

Вы могли бы написать, что все это более сжато, как:

execute 'git clone https://gitlab.com/dsura/test-go-web-app.git /var/apps/test-go-web-app' do 
    creates '/var/apps/test-go-web-app' 
end 

Или использовать GIT ресурс еще меньше:

git '/var/apps/test-go-web-app' do 
    action :checkout 
    repository 'https://gitlab.com/dsura/test-go-web-app.git' 
end 

Это ты оставь в action :checkout, действие по умолчанию :sync обновит к ветке master каждый раз, когда работает шеф-повар, который тоже может быть лучше.

+0

Извините, что это должно быть 'dirname' – denniss

+0

' dirname ('/ var/apps') == '/ var'', что, вероятно, не то, что вы имели в виду, но остальная часть ответа применяется :) – coderanger