需要子目录中的所有文件

发布于 2024-10-09 06:31:39 字数 155 浏览 3 评论 0原文

我有以下目录树。

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

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

I have the following directory tree.

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

I want to be able to load Ruby files in the folder/ directory, even the ones in the sub-directories. How would I do so?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

画▽骨i 2024-10-16 06:31:39

Jekyll 对其插件做了类似的事情。像这样的事情应该可以解决问题:

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

Jekyll does something similar with its plugins. Something like this should do the trick:

    Dir[File.join(".", "**/*.rb")].each do |f|
      require f
    end
岁月流歌 2024-10-16 06:31:39

代码更少,但仍可在 Linux、OS X 和 Windows 上运行:

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

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

With less code, but still working on Linux, OS X and Windows:

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

The '.' is needed for Ruby 1.9.2 where the current directory is no longer part of the path.

喜爱皱眉﹌ 2024-10-16 06:31:39

试试这个:

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

Try this:

Dir.glob(File.join(".", "**", "*.rb")).each do |file|
   require file
end
流年里的时光 2024-10-16 06:31:39

在我的项目中,其计算结果为 ["./fixset.rb", "./spec/fixset_spec.rb", "./spec/spec_helper.rb"] ,这会导致我的规范运行两次。因此,这里有一个调整版本:

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

这将安全地忽略 ./spec/ 中的所有 *.rb 文件

In my project this evaluates to ["./fixset.rb", "./spec/fixset_spec.rb", "./spec/spec_helper.rb"] which causes my specs to run twice. Therefore, here's a tweaked version:

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

This'll safely ignore all *.rb files in ./spec/

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文