Вы можете сделать что-то вроде этого:
current_folder = File.expand_path('../', __FILE__) # get absolute directory
Dir["#{current_folder}/subfolder/**/*.rb"].each {|f| require f}
Для этого потребуются все файлы в подпапке текущего каталога.Вы также можете использовать require_relative , потому что это функция ядра, ничего особенного.
Но если эти файлы зависят друг от друга и должны быть загружены в определенном порядке, вам придется указать вручнуюrequire
/ require_relative
в определенном порядке.
Также, если вам нужно устранить необходимость дублирования в spec и 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'
Это упрощенный пример, и вы можете иметь такие файлы инициализации для каждого вложенногомодуль и т. д.