我有以下目录树。
- app.rb
- folder/
- one/
- one.rb
- two/
- two.rb
我希望能够在文件夹/目录中加载Ruby文件,甚至是子目录中的文件。我该怎么做?
答案 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/