需要作爲一個例子:通配符文件中的Ruby
Dir[File.dirname(__FILE__) + "/support/**/*.rb"].each { |f| require f }
這是怎樣的RSpec要求所有的支持目錄中的Ruby文件和所有子目錄中。我知道這與"/**/*"
有關。這在Ruby中意味着什麼?它是如何工作的?
需要作爲一個例子:通配符文件中的Ruby
Dir[File.dirname(__FILE__) + "/support/**/*.rb"].each { |f| require f }
這是怎樣的RSpec要求所有的支持目錄中的Ruby文件和所有子目錄中。我知道這與"/**/*"
有關。這在Ruby中意味着什麼?它是如何工作的?
File.dirname(__FILE__)
是文件所在的目錄。 **
和*
是UNIX通配符。將"/support/**/*.rb
添加到目錄指向任何以.rb
結尾的文件,該文件位於該目錄下的子目錄support
下的任意深度。
將它傳遞給Dir[]
給出了這樣的文件的數組。 each
遍歷這些文件,require
加載每個文件。
我認爲/**/
部分表示任何目錄,而*.rb
表示任何以.rb擴展名結尾的文件,而不管它的名稱如何。
所以,基本上,你所得到的任何.RB文件的任何文件夾中的
#{current_dir}/support/#{any_dir}/#{any_file_with_extention.rb}