为什么这不执行系统命令?

时间:2011-04-08 18:10:06

标签: ruby linux

我通过我在网上找到的脚本把它放在一起,但是我不确定为什么我的puts命令没有执行系统命令?它只是在未经执行的终端中。当我尝试系统(“rspec规范”)时,它工作但我无法捕获输出。

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 }

1 个答案:

答案 0 :(得分:5)

puts只需打印出您传递的字符串即可。它不会在shell中执行它。你的run方法中的反引号将在shell上执行。试试这个:

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