需要子目录中的所有文件

时间:2010-12-24 19:20:35

标签: ruby filesystems require

我有以下目录树。

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

我希望能够在文件夹/目录中加载Ruby文件,甚至是子目录中的文件。我该怎么做?

4 个答案:

答案 0 :(得分:18)

Jekyll与其插件类似。这样的事情可以解决问题:

    Dir[File.join(".", "**/*.rb")].each do |f|
      require f
    end

答案 1 :(得分:17)

代码较少,但仍在Linux,OS X和Windows上工作:

Dir['./**/*.rb'].each{ |f| require f }

Ruby 1.9.2需要'.',其中当前目录不再是路径的一部分。

答案 2 :(得分:4)

试试这个:

Dir.glob(File.join(".", "**", "*.rb")).each do |file|
   require file
end

答案 3 :(得分:2)

在我的项目中,此评估结果为["./fixset.rb", "./spec/fixset_spec.rb", "./spec/spec_helper.rb"],这导致我的规格运行两次。因此,这是一个调整版本:

Dir[File.join(".", "**/*.rb")].each { |f| require f unless f[/^\.\/spec\//]}

这将安全地忽略./spec/

中的所有* .rb文件