目標: ディレクトリ構造に一致する、ディレクトリ構造を備えたすべてのファイルを収集します。
しわ: 一致するが、ありがたいことに「do-not-want」という一意の名前が付けられている厄介な望ましくないディレクトリを除外する必要があります。無実を守るために変更された実際の文字列。
- source/dir1/content/scripts -わかりました
- source/dir2/subdir1/content/scripts - わかりました
- source/dir3/do-not-want/content/scripts -うーん...したくない
以下のスクリプトは機能しますが、必要のない望ましくないパスを個別にチェックする必要があります。この同じ FileList を irb で除外してテストすると、希望どおりに動作します。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
確かに私は愚かなことをしている。
ボーナス ポイント: rake/ruby の学習を手伝ってくれて、しわを克服しながら同じ目標を達成するためのより良い方法を教えてくれれば。