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.

Foi útil?

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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top