2011-04-08 162 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