exécuter des fichiers dans un répertoire récursive en utilisant Ruby
-
22-08-2019 - |
Question
Je travaille sur le script en ce moment qui doit exécuter chaque script Ruby dans un répertoire et ses sous-dossiers.
par exemple.
run-all.rb
- scripts
- folder1
- script1.rb
- script2.rb
- folder2
- script3.rb
- script4.rb
Comme le serveur est un serveur Windows je normalement utiliser un fichier de commandes, mais la tête dev insiste tout doit être fait en Ruby que certains membres ont des Mac et de Windows ne peuvent pas comprendre des fichiers batch.
La question peut-être donnés, ma connaissance de Ruby est très basique.
La solution
Cela dépend ce que vous entendez par « run ». Pour exécuter tout le code qui est dans chaque script dans le même processus rubis, cela fera l'affaire:
Dir["scripts/**/*.rb"].each{|s| load s }
Mais vous voulez exécuter chaque script dans son propre processus de rubis, essayez ceci:
Dir["scripts/**/*.rb"].each{|s| puts `ruby #{s}` }
Il suffit de mettre l'une ou l'autre de ceux-ci dans le contenu de run-all.rb
et la course ruby run-all.rb
forment la ligne de commande.
Autres conseils
Quelque chose comme cela devrait probablement travailler:
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