为什么Dir.glob在Rails应用程序模板中返回一个空数组?

问题描述:

我实现一个自定义的Rails app template.remove文件,其中列出文件的通配符式样的模式(例如app/**/*.erb)后bundle install完成被删除:为什么Dir.glob在Rails应用程序模板中返回一个空数组?

removals = File.readlines('/path/to/.remove') 
cwd = Dir.getwd 

after_bundle do 
    # Process removals 
    removals.each do |pattern| 

    puts 'glob:'+cwd+'/'+pattern   # glob:/Users/acobster/starfruit/app/**/*.erb 
    puts Dir.glob(cwd+'/'+pattern).count # 0 
    puts `tree #{cwd}/app`     # all files in the app tree, 
              # including several .erb files 

    Dir.glob(cwd+'/'+pattern).each do |filepath| 
     puts "  removing #{filepath}" 
     remove_file(filepath) 
    end 
    end 
end 

根据调试代码(见上述评论)时,我想删除的文件(在这种情况下,应用程序/树下的所有.erb文件)都在树中,但Dir.glob('/Users/acobster/starfruit/app/**/*.erb')的等价物正在返回一个空数组。

Weirder还没有,当我运行Dir.glob('/Users/acobster/starfruit/app/**/*.erb')irb,它正确地返回数组与三个.erb文件存在。

发生了什么事?

原来我只是忘记从glob模式中去掉换行符。我将第一行更改为

removals = File.readlines('/path/to/.remove').map(&:strip).reject(&:empty?)