제가 특정 보석을 설치하지 않았다면, "oj"
라고 해 봅시다. 다음 작업을 수행하면 보석이 설치되고 끝에 Gem.find_files
이 설치되어있는 경로를 반환합니다.`Gem.find_files`는 그 자체와 상호 작용합니다
require "open3"
name = "oj"
_, out, err, thread = Open3.popen3("sudo gem install #{name}")
thread.join
puts out.read, err.read
p Gem.find_files(name)
그러나, 나는 마지막에 같은 전화의 발생 전에 Gem.find_files(name)
의 추가 라인을 가지고 다음, 상기 다음
require "open3"
name = "oj"
if Gem.find_files(name).empty?
_, out, err, thread = Open3.popen3("sudo gem install #{name}")
thread.join
puts out.read, err.read
p Gem.find_files(name)
end
Gem.find_files
을 (보석을 제거하고) 실행하는 경우 end는 빈 배열을 반환합니다. Gem.find_files
(설치 전)의 첫 번째 호출은 Gem.find_files
(설치 후)의 두 번째 호출이 빈 배열을 반환하는 것으로 보입니다.
- 왜 빈 배열을 반환합니까?
Gem.find_files
중 하나 또는 두 번을 수정하여 첫 번째 (설치 전)가 빈 배열을 반환하고 후자의 배열 (포함 된 후)이 포함 된 경로를 반환하도록하려면 어떻게해야합니까?