Ejecuta los archivos en un directorio de forma recursiva usando ruby
-
22-08-2019 - |
Pregunta
Estoy trabajando en la secuencia de comandos ahora que se ha de ejecutar cada ruby script en una carpeta y sus subcarpetas.
por ejemplo,
run-all.rb
- scripts
- folder1
- script1.rb
- script2.rb
- folder2
- script3.rb
- script4.rb
Como el servidor es un servidor de Windows yo uso normalmente un archivo de proceso por lotes, pero la cabeza dev insiste en que todo debe ser hecho en ruby como algunos miembros han Mac y no puede entender por Lotes de Windows los Archivos.
Como la pregunta de mayo han regalado, mis conocimientos de Ruby es muy básica.
Solución
Depende de lo que entendemos por "correr". A sólo hay que ejecutar el código que se encuentra en cada secuencia de comandos dentro del mismo proceso de rubí, esto va a hacer el truco:
Dir["scripts/**/*.rb"].each{|s| load s }
Pero desea ejecutar cada secuencia de comandos en su propio proceso de rubí, a continuación, intente lo siguiente:
Dir["scripts/**/*.rb"].each{|s| puts `ruby #{s}` }
Sólo hay que poner el bien de estos en el contenido de run-all.rb
y la ejecución ruby run-all.rb
formar la línea de comandos.
Otros consejos
Algo como esto probablemente debería funcionar:
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