为什么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?)