Execução de arquivos em um diretório de forma recursiva usando ruby
-
22-08-2019 - |
Pergunta
Eu estou trabalhando em roteiro agora que tem de executar cada script ruby ??em um diretório e suas subpastas.
por exemplo.
run-all.rb
- scripts
- folder1
- script1.rb
- script2.rb
- folder2
- script3.rb
- script4.rb
Como o servidor é um servidor Windows eu usaria normalmente um arquivo de lote, mas o dev cabeça insiste tudo deve ser feito em Ruby como alguns membros têm Macs e não pode entender Batch arquivos do Windows.
Como a questão pode ter dado afastado, meu conhecimento de Ruby é muito básico.
Solução
Depende do que você entende por "run". Apenas para executar o código que está em cada roteiro dentro do mesmo processo rubi, isso irá fazer o truque:
Dir["scripts/**/*.rb"].each{|s| load s }
Mas você deseja executar cada script em seu próprio processo de rubi, em seguida, tente o seguinte:
Dir["scripts/**/*.rb"].each{|s| puts `ruby #{s}` }
Basta colocar a qualquer um destes no conteúdo de run-all.rb
eo ruby run-all.rb
run formar a linha de comando.
Outras dicas
Algo como este trabalho deve provavelmente:
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