Запуск файлов в каталоге, рекурсивно использующих ruby
Сейчас я работаю над script, который должен запускать каждый ruby script в каталоге и его подпапках.
например.
run-all.rb
- scripts
- folder1
- script1.rb
- script2.rb
- folder2
- script3.rb
- script4.rb
Поскольку сервер является сервером Windows, я обычно использовал командный файл, но руководитель dev настаивает на том, что все должно быть сделано в рубине, так как некоторые члены имеют компьютеры Mac и могут не понимать пакетные файлы Windows.
Как мог бы быть вопрос, мои знания о Ruby очень просты.
Ответы
Ответ 1
Зависит от того, что вы подразумеваете под "run". Чтобы просто выполнить код, который находится в каждом script в рамках одного и того же рубинового процесса, это сделает трюк:
Dir["scripts/**/*.rb"].each{|s| load s }
Но вы хотите запустить каждый script в своем собственном рубиновом процессе, а затем попробуйте следующее:
Dir["scripts/**/*.rb"].each{|s| puts `ruby #{s}` }
Просто поместите одну из них в содержимое run-all.rb
и запустите ruby run-all.rb
в командной строке.
Ответ 2
Возможно, что-то вроде этого должно работать:
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