目标:收集所有文件,完成目录结构,匹配目录结构。
皱纹:需要过滤掉一个讨厌的不受欢迎的目录,它匹配但幸运的是唯一地命名为“不想要”。实际字符串已更改以保护无辜者。
- 源/dir1/content/scripts -好的
- 源/dir2/subdir1/content/scripts -好的
- source/dir3/do-not-want/content/scripts -嗯...不想要
下面的脚本有效,但我必须单独检查不需要的路径,这是不必要的。当我在 irb 中使用 exclude 测试同一个 FileList 时,它可以按需要工作。从我的 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 并向我展示一种更好的方法来实现相同的目标,同时战胜皱纹。