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.

¿Fue útil?

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
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top