[英]How to check if a gem is installed?
我为 Sinatra 项目安装了 data_mapper。 奇怪,为什么当我执行gem install brew
,我可以$ which brew
并获取其位置的路径而不能用于 data_mapper? 这适用于某些宝石,不适用于其他宝石。
如何验证 gem 是否正确安装? 检查版本会确保 gem 被正确下载吗?
通用解决方案
要获取已安装的 gem 的完整列表:
gem list
要测试特定的 gem,您可以将-i
与正则表达式一起使用:
gem list -i "^gem_name$"
(在此技术的评论中归功于 Timo。)
OP 的特殊解决方案
如果找不到data_mapper,则可能是gem名称与您期望的不同。
此外,如果您只是在执行which brew
来查找 brew,那么您不会找到名为 brew 的 gem,而是会找到 brew 可执行文件的位置。 试试gem which brew
代替。
编辑:
如果您通过执行which data_mapper
来查找which data_mapper
,您可能找不到它。 which
是一个用于查找 unix 可执行文件的 unix 程序,而 data_mapper 可能没有。
由于您的目标是验证 gem 是否安装了正确的版本,因此请使用gem list
。 您可以使用gem list data_mapper
来限制特定的 gem。
要验证它是否已安装并正常工作,您必须尝试require
gem,然后在您的代码中使用它。
如果您想在脚本中使用检查,这会提供更好的输出(真或假)和适当的退出代码:
gem list -i <gem_name>
或者添加版本选项:
gem list -i <gem_name> -v version
如果您在项目中使用bundle
,则使用以下命令检查项目中您的 gem 是否完全匹配。
bundle info ^data_mapper$
对于脚本使用, gem query
可能更好:
gem query --silent --installed --exact rubygems --version 2.0.0
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.