Требовать все файлы в подкаталоге

У меня есть следующее дерево каталогов.

- app.rb
- folder/
  - one/
    - one.rb
  - two/
    - two.rb

Я хочу иметь возможность загружать файлы 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/