Capistrano: Как я могу запустить задачу на ВСЕХ хостах, если ЛЮБОЙ из них не проходит проверку? - PullRequest
0 голосов
/ 29 октября 2019

Я использую capistrano для развертывания приложения rails.

У меня проблема с выполнением проверки на ВСЕХ хостах, а затем с определением, должна ли задача запускаться на ВСЕХ хостах, если ЛЮБОЙ из них провалит проверку,Проверка может, например, искать файл:

desc "Make sure file is on all servers"
  task :do_something do
    on roles(:app) do
      unless test("[ -f /some_dir/the_file.txt ]")
        # Run something on ALL servers if missing on just one of them...
      end
    end
  end
end

Я также подумал, можно ли это как-то сделать, сначала запустив одну задачу на всех серверах и объединив результат этих задач, а затем во вторую задачузапустите его, если на выходе первого файла не было ни на одном из серверов.

1 Ответ

0 голосов
/ 29 октября 2019

Я понял это:

task :check_something do
  has_file = []
  on roles(:app) do
    has_file << test("[ -f /some_dir/the_file.txt ]")
  end
  set(:should_run_something, has_file.any?{|file| file == false})
end

task :run_something do
  on roles(:app) do
    if fetch(:should_run_something)
      # Run my command
    end
  end
end
after :check_something, :run_something
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...