【发布时间】:2014-12-27 11:25:56
【问题描述】:
假设我没有安装某个 gem,比如说"oj"。如果我执行以下操作,则会安装 gem,最后的 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 并)运行以下命令,在最后发生相同的调用之前有一个额外的 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 最后返回一个空数组。似乎Gem.find_files 的第一次调用(安装前)使Gem.find_files 的第二次调用(安装后)返回一个空数组。
- 为什么它返回一个空数组?
- 如何修复
Gem.find_files的一个或两个出现,以便第一个(安装前)返回一个空数组,而后一个(安装后)返回包含的路径?
【问题讨论】: