Я хочу иметь возможность загружать файлы Ruby в каталог/каталог, даже те, что указаны в подкаталогах. Как мне это сделать?
Ответ 1
Jekyll делает что-то похожее с его плагинами. Что-то вроде этого должно сделать трюк:
Dir[File.join(".", "**/*.rb")].each do |f|
require f
end
Ответ 2
С меньшим количеством кода, но все еще работающим на Linux, OS X и Windows:
Dir['./**/*.rb'].each{ |f| require f }
Для Ruby 1.9.2 требуется '.', где текущий каталог больше не является частью пути.
Ответ 3
Попробуйте следующее:
Dir.glob(File.join(".", "**", "*.rb")).each do |file|
require file
end
Ответ 4
В моем проекте это оценивается как ["./fixset.rb", "./spec/fixset_spec.rb", "./spec/spec_helper.rb"], что приводит к тому, что мои спецификации запускаются дважды. Поэтому здесь исправлена версия:
Dir[File.join(".", "**/*.rb")].each { |f| require f unless f[/^\.\/spec\//]}
Это безопасно будет игнорировать все *.rb файлы в ./spec/