是否可以递归地要求Ruby中的目录中的所有文件?

jua*_*aid 17 ruby recursion file

我正在开发一个API,需要加载当前目录和所有子目录中的所有.rb文件.目前,我正在为我添加的每个文件输入一个新的require语句,但我想把它放在我只需要将文件放在其中一个子目录中并自动添加的地方.

是否有标准命令来执行此操作?

Fil*_*eca 42

在这种情况下,它加载lib目录下的所有文件:

Dir["#{File.dirname(__FILE__)}/lib/**/*.rb"].each { |f| load(f) }
Run Code Online (Sandbox Code Playgroud)

  • 如果使用`require`,该文件将被视为源文件并作为库加载.使用`load`会导致文件作为脚本运行,并会阻止加载文件中的任何局部变量导入当前环境.Ruby还允许您使用`load`重新导入文件,但不能使用`require`重新导入文件.这两种语法都可以在这里使用,只要确保它正在做你认为它正在做的事情. (14认同)
  • 但是`require`,不介意您输入扩展名,所以我认为这是可取的 (2认同)

Geo*_*Geo 6

require "find"

Find.find(folder) do |file|
  next if File.extname(file) != ".rb"
  puts "loading #{file}"
  load(file)
end
Run Code Online (Sandbox Code Playgroud)

这将递归加载每个.rb文件.