我为Sinatra项目安装了data_mapper。好奇,为什么当我做gem install brew
时,我可以$ which brew
获取其位置的路径而不能用于data_mapper?这适用于某些宝石而不适用于其他宝石。
如何验证宝石安装是否正确?检查版本会确保gem正确下载吗?
答案 0 :(得分:42)
一般解决方案
尝试使用gem list
获取已安装的宝石列表。
要测试特定的gem,您可以将-i
与正则表达式gem list -i "^gem_name$"
一起使用。
(在对这项技术的评论中感谢蒂莫。)
OP的特定解决方案
如果找不到data_mapper,可能是宝石名称与您的预期不同。
另外,如果你只是在which brew
找到brew,你就找不到名为brew的gem,你找到了brew可执行文件的位置。请改为gem which brew
。
修改强>
如果您正在通过which data_mapper
查找data_mapper,则可能无法找到它。 which
是用于查找unix可执行文件的unix程序,而data_mapper可能没有。
由于您的目标是验证使用正确版本安装的gem,请使用gem list
。您可以使用gem list data_mapper
限制特定的gem。
要验证它已安装并正常工作,您必须尝试require
gem,然后在您的代码中使用它。
答案 1 :(得分:35)
如果您想在脚本中使用检查,这会提供更好的输出(true或false)和适当的退出代码:
gem list -i <gem_name>
或者添加版本选项:
gem list -i <gem_name> -v version
答案 2 :(得分:0)
如果您在项目中使用bundle
,请使用以下命令检查项目中宝石的精确匹配。
bundle info ^data_mapper$
答案 3 :(得分:0)
对于脚本使用,gem query
可能更好:
gem query --silent --installed --exact rubygems --version 2.0.0