2013-10-21 18 views
1

需要作爲一個例子:通配符文件中的Ruby

Dir[File.dirname(__FILE__) + "/support/**/*.rb"].each { |f| require f } 

這是怎樣的RSpec要求所有的支持目錄中的Ruby文件和所有子目錄中。我知道這與"/**/*"有關。這在Ruby中意味着什麼?它是如何工作的?

回答

1

File.dirname(__FILE__)是文件所在的目錄。 ***是UNIX通配符。將"/support/**/*.rb添加到目錄指向任何以.rb結尾的文件,該文件位於該目錄下的子目錄support下的任意深度。

將它傳遞給Dir[]給出了這樣的文件的數組。 each遍歷這些文件,require加載每個文件。

0

我認爲/**/部分表示任何目錄,而*.rb表示任何以.rb擴展名結尾的文件,而不管它的名稱如何。

所以,基本上,你所得到的任何.RB文件的任何文件夾中的

#{current_dir}/support/#{any_dir}/#{any_file_with_extention.rb}