11

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

例如

run-all.rb
- scripts
  - folder1
    - script1.rb
    - script2.rb
  - folder2
    - script3.rb
    - script4.rb

由于服务器是 Windows 服务器,我通常会使用批处理文件,但负责人坚持一切都必须在 ruby​​ 中完成,因为有些成员有 Mac,可能不理解 Windows 批处理文件。

由于问题可能已经泄露,我对 Ruby 的了解非常基础。

4

2 回答 2

28

取决于您所说的“运行”是什么意思。要在同一个 ruby​​ 进程中执行每个脚本中的代码,这将达到目的:

Dir["scripts/**/*.rb"].each{|s| load s }

但是如果你想在它自己的 ruby​​ 进程中运行每个脚本,那么试试这个:

Dir["scripts/**/*.rb"].each{|s| puts `ruby #{s}` }

只需将其中任何一个放在命令行的内容中run-all.rb并运行即可。ruby run-all.rb

于 2009-03-27T12:34:36.783 回答
1

像这样的东西应该可以工作:

def process_directory(basedir)
puts basedir
Find.find(basedir.chomp) do |path|
    if FileTest.directory?(path)
        if File.basename(path)[0] == ?.
            Find.prune       # Don't look any further into this directory.
        else
            next
        end
    else
        puts path
    end
end
于 2009-03-27T12:11:11.973 回答