Domanda

Voglio eseguire un comando remoto (diff git di current_revision e testa in un paio di cartelle) e catturare l'output.

ho provato run. ( "Git diff rev1 rev2 - cartella | gatto"), ma il metodo di sempre ritorna sembra tornare a zero (anche se posso vedere l'output diff nell'output Capistrano)

Tutte le idee? Posso usare diversi mezzi di tubazioni il comando, o qualcosa di simile? Im non un mago Unix, quindi potrebbe essere qualcosa di banale Im manca qui.

È stato utile?

Soluzione

Forse capture?

"L'aiutante di cattura eseguirà il comando dato sul primo server di corrispondenza, e restituirà l'output del comando sotto forma di stringa."

https://github.com/capistrano/ Capistrano / wiki / 2.x-DSL-Azione-Inspection-Capture

Altri suggerimenti

Se si desidera catturare l'output di più host, l'uso run con un blocco: per esempio:.

 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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top