2011-01-26 16 views
5

Me parece que a menudo estoy ejecutando una secuencia de tareas rutinarias de "limpieza" antes y después de hacer un commit git para mi aplicación Rails 3.¿Es posible llamar a Git u otras herramientas de línea de comandos desde un script Thor?

Estaba pensando en poner estas cosas en una secuencia de comandos Thor, pero una cosa que no he podido averiguar es cómo usar Thor (o Rake) para llamar a otras herramientas en el sistema.

¿Es posible llamar a un comando como git log desde un script de Thor o Rake, y si es así, ¿cómo se ve eso?

Gracias!

Respuesta

12

Sólo desembolsar:

result = %x(git log) 
puts result 

o

system('git log') 

si lo que desea es pasar la salida de la terminal.

También existe la joya grit que abstrae las herramientas de Git en una biblioteca Ruby:

require 'grit' 
repo = Grit::Repo.new("/path/to/repo") 
repo.commits.each do |commit| 
    puts "#{commit.id}: #{commit.message}" 
end 
+1

Aha! Gracias. "shell out" es probablemente la palabra clave que me faltaba en mi búsqueda de google :) – Andrew

+0

Hmm, me devuelven nil usando% x, sistema y back-ticks. ¿Hay algo que me falta? ¿Debo ingresar al directorio correcto? – Jorge

+0

@Jorge debes estar dentro o debajo del directorio del proyecto (el que tiene el directorio '.git') y el comando' git' debe estar en la ruta (es decir, debes asegurarte de que tu script realmente pueda encontrar 'git') . – Theo

4

No olvide que esos son solo archivos de Ruby, por lo que puede usar todo el arsenal de Ruby, así que cosas como% x [rm -rf /], system ("rm -rf /") y `rm -rf /` son accesibles en esos scripts también.

+0

Gracias por el enlace! – Andrew

Cuestiones relacionadas