Pregunta

Quiero ejecutar un comando remoto (git diff de current_revision y la cabeza en un par de carpetas) y capturar la salida.

He intentado correr. ( "Git diff Rev1 rev2 - carpeta | gato"), pero el método devuelve siempre parece volver a cero (incluso cuando puedo ver la salida del diff en la salida de Capistrano)

Algunas ideas? ¿Puedo utilizar diferentes medios de tubería de la orden, o algo por el estilo? No soy un asistente de Unix, por lo que podría ser algo trivial im que falta aquí.

¿Fue útil?

Solución

Tal vez capture?

"El ayudante de captura, se ejecutará la orden dada en el primer servidor de juego, y devolverá el resultado del comando como una cadena."

https://github.com/capistrano/ Capistrano / wiki / 2.x-DSL-Acción-inspección-Captura

Otros consejos

Si quiere capturar el resultado de varios hosts, el uso de ejecución con un bloque: por ejemplo:.

 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
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top