使用ruby以递归方式在目录中运行文件

Mac*_*cha 11 ruby directory subdirectory

我正在编写脚本,它必须在目录及其子文件夹中运行每个ruby脚本.

例如

run-all.rb
- scripts
  - folder1
    - script1.rb
    - script2.rb
  - folder2
    - script3.rb
    - script4.rb
Run Code Online (Sandbox Code Playgroud)

由于服务器是Windows服务器,我通常会使用批处理文件,但是头部开发人员坚持认为一切都必须在ruby中完成,因为有些成员有Mac并且可能不了解Windows批处理文件.

由于问题可能已经解决,我对Ruby的了解非常基础.

pjb*_*jb3 28

取决于"跑"的意思.要在同一个ruby进程中执行每个脚本中的代码,这将解决问题:

Dir["scripts/**/*.rb"].each{|s| load s }
Run Code Online (Sandbox Code Playgroud)

但是你想在它自己的ruby进程中运行每个脚本,然后试试这个:

Dir["scripts/**/*.rb"].each{|s| puts `ruby #{s}` }
Run Code Online (Sandbox Code Playgroud)

只需将其中任何一个放入命令行的内容中,run-all.rb然后运行即可ruby run-all.rb.