0

目标:收集所有文件,完成目录结构,匹配目录结构。

皱纹:需要过滤掉一个讨厌的不受欢迎的目录,它匹配但幸运的是唯一地命名为“不想要”。实际字符串已更改以保护无辜者。

  • 源/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 并向我展示一种更好的方法来实现相同的目标,同时战胜皱纹。

4

1 回答 1

0

我认为您应该使用FileList['source/**/content/scripts'].exclude(/\/do-no-want\//)过滤掉包含“/do-no-want/”子字符串的路径。

尝试将输出添加到您的 rake 文件中,以便您可以查看和调试那里发生的事情。

于 2013-09-03T09:21:22.273 回答