2011-01-26 6 views
5

Uważam, że często uruchamiam sekwencję rutynowych zadań "czyszczenia" przed i po dokonaniu zatwierdzenia git dla mojej aplikacji Rails 3.Czy można wywołać Git lub inne narzędzia linii poleceń z poziomu skryptu Thor?

Zastanawiałem się nad umieszczeniem tych rzeczy w skrypcie Thora, ale jedno, czego nie byłem w stanie wymyślić, to jak użyć Thor (lub Rake), aby wywołać inne narzędzia w systemie.

Czy można wywołać polecenie takie jak git log ze skryptu Thor lub Rake, a jeśli tak, to jak to wygląda?

Dzięki!

Odpowiedz

12

Tak wybulić:

result = %x(git log) 
puts result 

lub

system('git log') 

jeśli po prostu chcesz przekazać wyjście do terminalu.

Istnieje również grit gem że abstrahuje narzędzia Git do biblioteki Ruby:

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

Aha! Dzięki. "shell out" jest prawdopodobnie słowem kluczowym, którego mi brakowało w mojej misji google :) – Andrew

+0

Hmm, uzyskuję zero przy użyciu% x, systemu i tyknięć wstecz. Czy jest coś, czego mi brakuje? Czy muszę przejść do odpowiedniego katalogu? – Jorge

+0

@Jeżeli musisz znajdować się w katalogu projektu lub pod nim (ten z katalogiem '.git'), a polecenie' git' musi znajdować się w ścieżce (tzn. Musisz upewnić się, że twój skrypt rzeczywiście może znaleźć 'git') . – Theo

4

Nie zapominaj, że są to tylko pliki w formacie Ruby, więc możesz również użyć wszystkiego w arsenale Ruby, więc rzeczy takie jak% x [rm -rf /], system ("rm -rf /") i `rm -rf /` są również dostępne w tych skryptach.

+0

Dzięki za link! – Andrew

Powiązane problemy