Капистрано, сменить хост в задаче

У меня есть следующая проблема:

Мне нужно написать задачу capistrano, которая будет выполнять некоторые команды на test_server_1, а затем переключаться на test_server_2 для другого набора команд.

Я узнал, я могу сделать что-то вроде:

task :test_task_for_test_server_1, roles: :test do
  run 'command 1'
  test_server_2
  run 'command 2'
end

команда 1 будет выполнена на test_server_1, а команда 2 будет выполнена на обоих серверах. Мне нужно закрыть сеанс test_server_1 и выполнить вторую команду только на test_server_2. Есть идеи, если это возможно?


person mingle    schedule 15.05.2013    source источник
comment
Я бы поместил их в отдельные задачи и роли и сделал бы after :test_for_test_server_1, :test_for_test_server_2 (но с более значимыми именами.)   -  person Shawn Balestracci    schedule 15.05.2013
comment
они имеют общую переменную, имя файла, которое генерируется в задаче   -  person mingle    schedule 15.05.2013
comment
Вы можете извлечь это в отдельный метод?   -  person Shawn Balestracci    schedule 15.05.2013
comment
да, но я не знаю, решит ли это проблему. Первая задача — сделать резервную копию, второе восстановить. Имя файла представляет собой комбинацию имени сервера и метки времени. Можно ли вызвать задачу капистрано с параметром из другой задачи?   -  person mingle    schedule 15.05.2013
comment
Я думаю, вы могли бы просто сохранить его как переменную экземпляра. def backup_filename @backup_filename ||= server + timestanp; end Затем вы можете вызвать этот метод из обеих задач.   -  person Shawn Balestracci    schedule 15.05.2013


Ответы (1)


ты пробовал это?

task :test_task_for_test_server_1, roles: :test do
  run 'command 1', :server => :test_server_1
  run 'command 2', :server => :test_server_2
end
person Montells    schedule 26.02.2014