是否有一种方法可以从Ruby程序内部验证我是否拥有最新版本的gem?也就是说,是否有一种以编程方式执行bundle outdated #{gemname}
的方法?
我尝试查看bundler的源代码,但找不到直接的方法。目前我正在使用下面这种方式,它很脆弱、慢且不优雅:
IO.popen(%w{/usr/bin/env bundle outdated gemname}) do |proc|
output = proc.readlines.join("\n")
return output.include?("Your bundle is up to date!")
end
exit 1
会终止你的程序执行。你能让这段代码正常工作吗?我在尝试的时候遇到了错误。 - Emilexit 1
,因此现在需要进行一些猴子补丁来解决问题。 - Alexey Kharchenkobundle outdated
提取为一个可重用的方法,没有退出和控制台输出。我认为这应该比猴子补丁“exit”或交换输出流更清洁。请查看我的更新答案以获取测试代码链接。 - Emil