Secuenciación de scripts de shell con rastrillo

Estoy trabajando en una utilidad de rake y quiero implementar algo que se menciona a continuación:

Hay algunos commands de shell en una secuencia en mi file Rake. Lo que quiero es que la secuencia debe esperar a que el command anterior termine de procesarse antes de pasar al siguiente.

sh "git commit -m \"#{args.commit_message}\"" do |ok, res| # Do some processing end sh "git push heroku master" 

Entonces, en el ejemplo anterior, lo que quiero es que

 sh "git push heroku master" 

no debe ejecutarse hasta que el procesamiento en el

 sh "git commit -m \"#{args.commit_message}\"" do |ok, res| # Do some processing end 

esta completado.

También es bueno tenerlo si puedo almacenar la salida del command de shell en una variable de Ruby para que pueda usarse en posteriores manipulaciones si es necesario.

Esperando la respuesta del compañero miembro de la comunidad en breve.

Gracias por adelantado.

A less que me falta algo, puede usar uno de los commands incorporados de Ruby para ejecutar commands del sistema; eche un vistazo a http://blog.jayfields.com/2006/06/ruby-kernel-system-exec-and-x.html para get más información.

No se menciona en ese enlace, pero probablemente optaría por usar los respaldos (que no estoy seguro si es diferente del método del sistema) para ejecutar el command de shell como:

 output = `ls` # => gets the output of the ls command to the output variable 

… por lo tanto, no veo por qué no podrías hacer:

 output = `git commit -m "#{args.commit_message}"` do |ok, res| # Do some processing end