2012-04-03 11 views
6

fragmentu kodu z deploy.rbJak ustawić zmienne warunkowy deploy.rb CAPISTRANO za

task :prod1 do 
    set :deploy_to, "/home/project/src/prod1" 
end 

task :prod2 do 
    set :deploy_to, "/home/project/src/prod2" 
end 

Mam 2 zadania jak wyżej. Teraz zamiast ręcznie uruchamiać "cap prod1 deploy" lub "cap prod2 deploy", chcę utworzyć zadanie "prod", które ustawia wymagane "deploy_to" na podstawie istnienia pliku na serwerze.

coś takiego:

task :prod do 
    if (A_FILE_IN_SERVER_EXISTS) 
    set :deploy_to, "/home/project/src/prod2" 
    else 
    set :deploy_to, "/home/project/src/prod1" 
end 

Jak mam to zrobić?

Odpowiedz

10

Można to zrobić tak:

task :set_deploy_to_location do 
    if capture("[ -f /etc/passwd2 ] && echo '1' || echo '0'").strip == '1' 
    set :deploy_to, "/home/project/src/prod2" 
    else 
    set :deploy_to, "/home/project/src/prod1" 
    end 
    logger.info "set deploy_to = #{deploy_to}"  
end 

to zrobi co trzeba. Możesz zaczepić tę metodę za pomocą haków przed i po:

before :deploy, :set_deploy_to_location 
+0

Dzięki, że działa! –