Как установить условные переменные в deploy.rb в Capistrano - PullRequest
6 голосов
/ 03 апреля 2012

Фрагмент из deploy.rb

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

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

У меня есть 2 задачи, как указано выше. Теперь вместо того, чтобы вручную запускать «cap prod1 deploy» или «cap prod2 deploy», я хочу создать задачу «prod», которая устанавливает требуемое «deploy_to» в зависимости от наличия файла на сервере.

что-то вроде:

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

Как мне это сделать?

1 Ответ

10 голосов
/ 04 апреля 2012

Вы можете сделать это следующим образом:

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

Это будет делать то, что вам нужно.Вы можете подключить этот метод, используя до и после хуков, как это:

before :deploy, :set_deploy_to_location
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...