Рекурсивный запуск файлов в каталоге с использованием Ruby

StackOverflow https://stackoverflow.com/questions/689516

  •  22-08-2019
  •  | 
  •  

Вопрос

Сейчас я работаю над сценарием, который должен запускать каждый Ruby-скрипт в каталоге и его подпапках.

например

run-all.rb
- scripts
  - folder1
    - script1.rb
    - script2.rb
  - folder2
    - script3.rb
    - script4.rb

Поскольку сервер является сервером Windows, я обычно использую пакетный файл, но главный разработчик настаивает, что все должно быть сделано в Ruby, поскольку у некоторых участников есть Mac, и они могут не понимать пакетные файлы Windows.

Как видно из вопроса, мои знания Ruby очень базовые.

Это было полезно?

Решение

Зависит от того, что вы подразумеваете под словом «бежать».Чтобы просто выполнить код, который есть в каждом скрипте в одном и том же Ruby-процессе, этого достаточно:

Dir["scripts/**/*.rb"].each{|s| load s }

Но если вы хотите запустить каждый скрипт в отдельном Ruby-процессе, попробуйте следующее:

Dir["scripts/**/*.rb"].each{|s| puts `ruby #{s}` }

Просто поместите любой из них в содержимое run-all.rb и бег ruby run-all.rb сформировать командную строку.

Другие советы

Вероятно, что-то вроде этого должно сработать:

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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top