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.

È stato utile?

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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top