我正在编写脚本,它必须在目录及其子文件夹中运行每个ruby脚本。
e.g。
run-all.rb
- scripts
- folder1
- script1.rb
- script2.rb
- folder2
- script3.rb
- script4.rb
由于服务器是Windows服务器,我通常会使用批处理文件,但是头部开发人员坚持认为一切都必须在ruby中完成,因为有些成员有Mac并且可能不了解Windows批处理文件。
由于问题可能已经解决,我对Ruby的了解非常基础。
答案 0 :(得分: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
。
答案 1 :(得分: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