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

时间:2017-06-17 23:50:29

标签: ruby-on-rails ruby glob

我正在使用.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文件的数组。

发生了什么?

1 个答案:

答案 0 :(得分:1)

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

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