2011-04-08 207 views
0

我已經通過我在網上找到的腳本放在一起,但我不確定爲什麼我的puts命令不執行系統命令?它只是坐落在碼頭未執行。當我嘗試系統(「rspec spec」)時,它工作正常,但我無法捕獲輸出。爲什麼不執行系統命令?

def run(cmd) 
    `#{cmd}` 
end 

def run_spec_files 
    system('clear') 
    result = "rspec spec" 
    puts result 
    growl(result) 
end 

def growl(message) 
    growlnotify = `which growlnotify`.chomp 
    unless growlnotify.empty? 
    title = "Test Results" 
    options = "-w -n Watchr -m '#{message}' '#{title}'" 
    run("#{growlnotify} #{options} &") 
    end 
end 

watch('lib/(.*)\.rb')  { run_spec_files } 
+0

你的直接問題的答案已經給出,但你可能只考慮使用autotest與自動測試咆哮。在沒有全部手動定義的情況下完成所有這些。 – Wes 2011-04-09 05:13:03

+0

我曾經,但自動測試只是在一段時間後停止工作。由於某種原因,Watchr似乎更加保持警惕。 – 2011-04-09 15:21:27

回答

5

puts只是打印出您傳遞它的字符串。它不會在shell中執行它。像你的run方法中的反引號將在shell上執行。試試這個:

def run_spec_files 
    system('clear') 
    result = run("rspec spec") 
    puts result 
    growl(result) 
end