你可以做這樣的事情:
current_folder = File.expand_path('../', __FILE__) # get absolute directory
Dir["#{current_folder}/subfolder/**/*.rb"].each {|f| require f}
這將需要在當前目錄下的子文件夾中的所有文件。你也可以使用require_relative,因爲它是內核函數,沒什麼特別的。
但是,如果這些文件相互依賴並且必須以定義的順序加載,那麼您將不得不按照定義的順序手動指定require
/require_relative
。
此外,如果你需要消除需要規範和lib重複,那麼你就可以走這條路:與頂級命名空間的名稱添加文件到您的/lib
文件夾的根,需要從這裏嵌套文件然後需要從/spec/spec_helper.rb
此單個文件:
# /lib/coolgem.rb
module CoolGem; end
current_folder = File.expand_path('../', __FILE__)
Dir["#{current_folder}/coolgem/*.rb"].each {|f| require f}
# /spec/spec_helper.rb
require_relative '../lib/coolgem'
這是簡化的例子,你可以爲每個嵌套模塊等這樣的初始化文件