2013-02-21 1 views
0

목표 : 디렉터리 구조와 일치하는 모든 파일을 수집하고 디렉터리 구조와 일치시킵니다.Rake FileList 제외 방법은 irb에서 작동하지만 rakefile에서는 작동하지 않습니다.

주름진 : 원하지 않는 성가신 디렉토리를 걸러 내고 고맙게도 '고의적으로 원하지 않는'이름으로 고를 필요가 있습니다. 무고한 사람을 보호하기 위해 실제 문자열이 변경되었습니다.

  • 소스/DIR1/내용/스크립트 - 확인
  • 소스/dir2는/디렉토리 subdir1/내용/스크립트 - 확인
  • 소스/dir3/할-하지 싶다/내용/스크립트 - 음 ...

작품 아래의 스크립트를 원하지만 내가 필요는 없습니다 원하지 않는 경로에 대한 별도의 검사를 할 필요가 없습니다. 내가이 동일한 FileList를 irb에서 exclude로 테스트하면 원하는대로 작동합니다. 내 rakefile에서 나는 을 원하지 않는다. 디렉토리가 FileList에 의해 반환된다.

FileList['source/**/content/scripts'].exclude('do-not-want').each do |f| 
    unless /do-not-want/ =~ f #hmm why does the exclude above not actually exclude do-not-want directories? 
     Dir.chdir(f) do |d| 
      puts "directory changed to #{d} and copying scripts from #{d} to common directory #{target}" 
      FileUtils.cp_r('.', target) 
     end   
    end 
end 

분명히 나는 ​​바보 같은 짓을하고 있습니다.

보너스 포인트 : 당신이 날 레이크/루비를 배우고 나에게 주름을 격파하면서 같은 목표를 달성하기 위해 더 나은 방법을 보여 수 있도록합니다.

답변

0

"/ do-no-want /"하위 문자열이 포함 된 경로를 필터링하려면 FileList['source/**/content/scripts'].exclude(/\/do-no-want\//)을 사용해야한다고 생각합니다.

레이크 파일에 출력을 추가하여 거기에서 일어나는 일을보고 디버깅 할 수 있습니다.

관련 문제