루비를 사용하여 디렉토리에서 파일을 재귀 적으로 실행합니다
-
22-08-2019 - |
문제
나는 디렉토리와 하위 폴더에서 각 루비 스크립트를 실행 해야하는 스크립트를 작업하고 있습니다.
예를 들어
run-all.rb
- scripts
- folder1
- script1.rb
- script2.rb
- folder2
- script3.rb
- script4.rb
서버는 Windows 서버이므로 일반적으로 배치 파일을 사용하지만 Head Dev는 일부 멤버가 Mac을 가지고 있으므로 Windows 배치 파일을 이해하지 못할 때 Ruby에서 모든 것을 수행해야한다고 주장합니다.
질문이 주어 졌을 때, 루비에 대한 나의 지식은 매우 기본적입니다.
해결책
"런"이 의미하는 바에 따라 다릅니다. 동일한 루비 프로세스 내에서 각 스크립트에있는 코드를 실행하려면 다음과 같이합니다.
Dir["scripts/**/*.rb"].each{|s| load s }
그러나 각 스크립트 자체의 루비 프로세스에서 각 스크립트를 실행하고 싶습니다.
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
제휴하지 않습니다 StackOverflow