Question

Je veux exécuter une commande à distance (git diff de current_revision et la tête dans quelques dossiers) et de capturer la sortie.

J'ai essayé terme. ( « Git diff rev1 rev2 - dossier | cat »), mais la méthode revient toujours semble revenir nul (même quand je peux voir la sortie de diff dans la sortie Capistrano)

Toutes les idées? Puis-je utiliser différents moyens de tuyauterie la commande, ou quelque chose comme ça? Je ne suis pas un sorcier Unix, il pourrait être quelque chose de trivial Im manque ici.

Était-ce utile?

La solution

Peut-être capture?

« L'assistant de capture exécutera la commande donnée sur le premier serveur correspondant, et renvoie la sortie de la commande comme une chaîne. »

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

Autres conseils

Si vous voulez capturer la sortie de plusieurs hôtes, exécutez l'utilisation avec un bloc: par exemple:.

 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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top