Как захватить выход из удаленной команды в Капистрано?
-
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