You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ruby如何require目录及其所有子目录下的全部rb文件?

问题原因与解决方案

报错的核心原因

  • 你的通配符规则**/*会同时匹配到文件和目录(比如示例中的sub_projects文件夹本身),你之前打印路径逻辑正常,是因为输出目录路径本身不会报错,而Ruby的require方法不支持加载目录,这就是你触发报错的直接原因。
  • 你没有过滤文件后缀,非.rb格式的文件也会被纳入加载逻辑,会引发额外的加载错误。

正确实现代码

推荐使用以下写法,自动过滤目录和非Ruby文件,同时用File.join避免跨系统路径分隔符兼容问题:

# __dir__ 是Ruby内置方法,直接返回当前文件所在目录的绝对路径,无需手动拼接
Dir[File.join(__dir__, 'projects', '**', '*.rb')].each do |file|
  require file
end

如果偏好使用require_relative,写法如下:

Dir[File.join('projects', '**', '*.rb')].each do |file|
  require_relative file
end

**/*.rb的通配符规则只会匹配所有.rb后缀的Ruby文件,自动跳过目录和其他格式的文件,即可正常完成加载。

内容的提问来源于stack exchange,提问作者fareastwood

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 11:15:01