2011-01-26 21 views
5

Rails 3 uygulamam için bir git işlemi yapmadan önce ve sonra bir dizi rutin 'temizleme' görevi yürütüyorum.Git komutunu veya diğer komut satırı araçlarını Thor komut dosyasının içinden aramak mümkün mü?

Bu şeyleri bir Thor senaryosuna koymayı düşünüyordum, ancak anlayamadığım bir şey, sistemdeki diğer araçları aramak için Thor'un (veya Rake) nasıl kullanılacağıdır.

Bir Thor veya Rake betiğinden git log gibi bir komutu çağırmak mümkün mü ve eğer böyle görünüyorsa bu nasıl görünüyor?

Teşekkürler!

cevap

12

Sadece ödemek:

result = %x(git log) 
puts result 

veya

system('git log') 

sadece terminale çıktı geçmek istiyorsan

. bağlantıdan

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

Aha! Teşekkürler. "shell out" muhtemelen benim google arayışı içinde eksik olan anahtar kelimedir :) – Andrew

+0

Hmm,% x, system ve back-ticks kullanarak geri döndüm. Kaybettiğim bir şey var mı? Doğru dizine cd yapmak zorunda mıyım? – Jorge

+0

@Jorge, proje dizininin içinde veya altında olmanız ('.git' dizini olanı) ve 'git' komutunun yolunda olması gerekir (yani komut dosyanızın gerçekten de' git' komutunu bulabilmeniz gerekir) . – Theo

4

Bunların sadece Ruby dosyaları olduğunu unutmayın, böylece Ruby haznesindeki herşeyi kullanabilirsiniz, bu yüzden% x [rm -rf /], system ("rm -rf /") gibi şeyler ve rm -rf/`bu komut dosyalarında da kullanılabilir.

+0

Teşekkür:

ayrıca Ruby kütüphaneye Git araçları soyutlar grit taş var! – Andrew

İlgili konular