2011-04-08 5 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-growl과 함께 자동 테스트를 사용하는 것이 좋습니다. 모든 수동 정의없이이 모든 것을 수행하십시오. – Wes

+0

나는 익숙하지만, 오토 테스트는 잠시 후에 작동을 멈춘다. Watchr은 어떤 이유로 더 세심한주의를 기울여야합니다. –

답변

5

puts 전달한 문자열을 인쇄합니다. 그것은 쉘에서 실행하지 않습니다. run 메서드의 백틱은 셸에서 실행됩니다. 이것을 시도하십시오 :

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