我正在使用.remove
文件实现自定义Rails app template,该文件列出了app/**/*.erb
完成后要删除的文件样式(例如bundle install
):
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
根据调试代码(参见上面的注释),我想要删除的文件(在本例中是app / tree下的所有.erb文件)都在树中,但相当于Dir.glob('/Users/acobster/starfruit/app/**/*.erb')
是返回一个空数组。
更奇怪的是,当我从Dir.glob('/Users/acobster/starfruit/app/**/*.erb')
运行irb
时,它会正确返回包含三个.erb文件的数组。
发生了什么?
答案 0 :(得分:1)
原来我只是忘记从glob模式中删除换行符。我将第一行改为
removals = File.readlines('/path/to/.remove').map(&:strip).reject(&:empty?)