如何检查是否安装了宝石?

and*_*ynh 38 ruby gem

我为Sinatra项目安装了data_mapper.好奇,为什么我这样做gem install brew,我可以$ which brew得到它的位置的路径,不能为data_mapper?这适用于某些宝石而不适用于其他宝石.

如何验证宝石安装是否正确?检查版本会确保gem正确下载吗?

use*_*951 48

一般解决方案

尝试gem list获取已安装的gem列表.

要测试特定的gem,可以使用-i正则表达式:gem list -i "^gem_name$".(在对这项技术的评论中感谢蒂莫.)

OP的特殊解决方案

如果找不到data_mapper,则宝石名称可能与您期望的不同.

此外,如果你正在which brew寻找brew,你没有找到名为brew的gem,你找到了brew可执行文件的位置.试试吧gem which brew.

编辑:

如果您正在寻找data_mapper which data_mapper,您可能无法找到它.which是一个用于查找unix可执行文件的unix程序,而data_mapper可能没有.

由于您的目标是验证使用正确版本安装的gem,请使用gem list.您可以使用限制特定的宝石gem list data_mapper.

要验证它是否已安装并正常工作,您必须尝试require使用gem,然后在代码中使用它.


Spa*_*jus 35

如果您想在脚本中使用检查,这会提供更好的输出(true或false)和适当的退出代码:

gem list -i <gem_name>
Run Code Online (Sandbox Code Playgroud)

或者添加版本选项:

gem list -i <gem_name> -v version
Run Code Online (Sandbox Code Playgroud)

  • `gem list`将regexp作为参数进行匹配.所以万一你会说像'gem list -i zip`这样的东西可能会有很多不同的宝石(`gem list -r zip | wc -l`在撰写本文时返回197).但是如果你对zip宝石特别感兴趣,你应该在regexp zip中说出来,即`gem list -i ^ zip $`.否则`gem install spain_zip_codes && gem list -i zip` => true,这可能永远不会是你想要的. (2认同)