2013-01-05 2 views
0

어떻게해야합니까? (목적은 터미널에서 인수로 테스트 파일을 전달할 때 원하는 모든 스크립트를 실행하거나 원하는 모든 스크립트를 실행할 수있게하는 것입니다. 아래의 코드와 시나리오 창 : 테스트 파일이 터미널 창 에 전달되는 경우ruby ​​rake에서 일부 스크립트 또는 모든 스크립트를 실행합니다.

다음 시스템 코드 아래 실행됩니다 :

scripts = ENV[scripts].plit(',') 
FileList[scripts].each { |file| 
system("ruby #{file} > #{directory_name}/#{file}.out")} 

테스트 파일이 터미널 창에서 통과되지 않은 경우 (그것은 내가 원하는 의미 내 테스트 스위트에있는 모든 스크립트를 실행하십시오), 시스템은 다음 코드를 실행합니다 :

FileList['test*.rb'].each { |file| 
system("ruby #{file} > #{directory_name}/#{file}.out")} 

답변

2

정확하게 이해한다면 if 문을 사용할 수 있습니까?

task :default do 
    if ENV[scripts] 
    scripts = ENV[scripts].split(',') 
    FileList[scripts].each { |file| 
    system("ruby #{file} > #{directory_name}/#{file}.out")} 
    else 
    FileList['test*.rb'].each { |file| 
    system("ruby #{file} > #{directory_name}/#{file}.out")} 
    end 
end 
+1

OP는 실제로 환경 변수 (예 : scripts = some_test; ruby ​​myscript.rb)를 사용한다는 의미 인 한이 답변에 동의합니다. OP가 실제로 스크립트를 인수로 전달하려는 경우 ENV [스크립트]에 액세스하는 대신 ARGV를 반복해야합니다. – nickgroenke

+0

@ johnnycakes : 예, 당신의 위대한 대답은 제가하고 싶은 일입니다. 고마워요. – battleship

관련 문제