Esecuzione di file in una directory in modo ricorsivo utilizzando rubino
-
22-08-2019 - |
Domanda
su cui sto lavorando in questo momento lo script che deve eseguire ogni script Ruby in una directory e nelle relative sottocartelle.
es.
run-all.rb
- scripts
- folder1
- script1.rb
- script2.rb
- folder2
- script3.rb
- script4.rb
Poiché il server è un server di Windows che normalmente utilizzare un file batch ma il dev testa insiste tutto deve essere fatto in rubino come alcuni soci hanno i Mac e non possono capire i file batch di Windows.
Dato che la questione possa aver dato via, la mia conoscenza di Ruby è molto semplice.
Soluzione
Dipende cosa si intende per "run". Per basta eseguire il codice che è in ogni script all'interno dello stesso processo rubino, questo farà il trucco:
Dir["scripts/**/*.rb"].each{|s| load s }
Ma si desidera eseguire ogni script in un suo processo di rubino, quindi provare questo:
Dir["scripts/**/*.rb"].each{|s| puts `ruby #{s}` }
Basta mettere l'uno di questi nei contenuti della run-all.rb
e ruby run-all.rb
corsa formare la linea di comando.
Altri suggerimenti
Qualcosa del genere dovrebbe probabilmente il lavoro:
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