我正在尝试获取有关RVM中安装的ruby版本以及相关gemset和gem的信息。
我的第一个想法是使用对rvm list
的系统调用来获取已安装的Rubies和每个Ruby的rvm use #{ruby_version} && rvm gemset list
。但是有一个问题。似乎rvm use #{ruby_version}
由RVM(输出Using #{path_to_ruby
)执行并确认,但列出的gemsets是运行脚本的Ruby版本中的宝石集。
有没有办法通过CLI或API从Rubyscript与RVM通信?
答案 0 :(得分:1)
我会对此嗤之以鼻 - 我认为你的问题是rvm主要通过修复你的环境变量来将你的shell指向不同的gemsets和ruby版本。
但是当您在子shell 中运行rvm use
时,env变量的更改不会传播到父shell。
如果没有对此进行太多研究,我最初的想法是让你运行rvm use
+然后在同一个子shell会话中运行一些列出所有这些更新的env变量的内容(参见此处您需要查看哪些:http://beginrescueend.com/rvm/info/)...然后在您的ruby脚本中,您需要设置环境以匹配子shell中的环境。
在shellpeak中你通常在这种情况下做的是“源”脚本而不是执行它。即source "the_script_that_sets_environment_variables"
。但是当你使用ruby脚本并使用反引号在子shell中运行东西时,你无法将环境传播回父级,而无需手动执行。
另一种解决方案可能是查看 RVM Ruby API 。我还没有找到很多关于它的文档,但它也可能适合你的情况:
http://www.rubyflow.com/items/4285