2016-03-30 21 views
0

komut kaynak cwd özelliğin amacı nedir? Nedense ben File.directory sanmıyorumChef amacı

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 

ve

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 

cevap

1

(yani /var/apps altında git repo klonlama) ilk blok eserlerini çalışan ancak beklendiği gibi ikinci bir işe yaramaz Var olan bir yöntem, ancak cwd '/var/apps''u kastediyorsanız, bir fark yoktur. Alt işlemi (aka. Script) çalıştırmadan önce çalışma dizinini ayarlar. Bu daha böyle cd kullanmak istemeyebilirsiniz execute kaynak için önemli olan, fakat execute den script devralır bu yüzden sadece gezinti için geliyor.

Daha kısaca o şeyi yazarken olabilir:

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 

Hatta az bir git kaynağı kullanabilirsiniz: Eğer action :checkout yazmayan

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

Bu varsayılan :sync eylem güncelleyecektir Şef her seferinde daha iyi olan master dalına kadar.

+0

Üzgünüm 'dirname' – denniss

+0

'dirname olması gerekiyordu ('/ var/apps') == '/ var' 'muhtemelen ne demek istediğini değil, ama cevabın geri kalanı geçerli :) – coderanger