Rake FileList exclude方法适用于irb但不适用于我的rakefile

时间:2013-02-21 16:37:21

标签: rake

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

皱纹:需要过滤掉一个令人讨厌的不受欢迎的目录,这个目录很匹配,但值得称道的是“不要想要”。更改了实际字符串以保护无辜者。

  • source / dir1 / content / scripts - ok
  • source / dir2 / subdir1 / content / scripts - ok
  • source / dir3 / do-not-want / content / scripts - well ...不想要

下面的脚本有效但我必须单独检查不需要的路径。当我使用排除在irb中测试同一个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

当然,我正在做一些愚蠢的事。

奖励积分:如果你帮我学习佣金/红宝石,并告诉我一个更好的方法来实现同样的目标,同时打败皱纹。

1 个答案:

答案 0 :(得分:0)

我认为您应该使用FileList['source/**/content/scripts'].exclude(/\/do-no-want\//)来过滤掉包含“/ do-not-want /”子字符串的路径。尝试将输出添加到您的rake文件中,这样您就可以查看和调试正在进行的操作在那里。