Как захватить выход из удаленной команды в Капистрано?

StackOverflow https://stackoverflow.com/questions/4723024

  •  12-10-2019
  •  | 
  •  

Вопрос

Я хочу запустить удаленную команду (git diff of current_revision и отправиться в несколько папок) и захватить выход.

Я пытался запустить ("git diff rev1 Rev2 - папка | Cat"), но метод всегда возвращает, кажется, возвращает NIL (даже когда я вижу выход Diff в выходе Capistrano).

Любые идеи? Могу ли я использовать различные средства для трудоустройства команды или что -то в этом роде? Я не волшебник Unix, поэтому мне здесь не хватает чего -то тривиального.

Это было полезно?

Решение

Может быть capture?

«Помощник Capture выполнит данную команду на первом соответствующем сервере и вернет вывод команды в виде строки».

https://github.com/capistrano/capistrano/wiki/2.x-dsl-action-inspection-capture

Другие советы

Если вы хотите захватить вывод нескольких хостов, используйте запустить с помощью блока: например:

 desc "capture output from multiple servers"
  task :capture_multiple_servers, :roles => [:some_servers] do
    results = {}
    run "hostname --fqdn" do |channel, stream, data|
      if stream == :out
        results[channel[:host]] = [] unless results.key?(channel[:host])
        results[channel[:host]] << data if stream == :out
      end
    end
    puts "Your results were:"
    results.keys.sort.each do | host |
      puts "#{host}:#{results[host].join}"
    end
  end
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top