2014-03-05 17 views
29

我为Sinatra项目安装了data_mapper。好奇,为什么当我做gem install brew,我可以$ which brew并得到它的位置的路径,不能为data_mapper?这适用于一些宝石,并不适用于其他宝石。如何检查是否安装了宝石?

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

+0

你可以试试这个http://stackoverflow.com/a/32986687/3728916 – ImranNaqvi

回答

33

通用的解决方案

尝试gem list得到安装的宝石的名单。

要测试一个特定的宝石,你可以使用-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来限制特定的宝石。

要验证它的安装和工作,你必须尝试require的宝石,然后在你的代码中使用它。

+0

'gem list'显示我有data_mapper。 'gem哪个brew'找到可执行文件?它看起来像一个.rb文件 – andy4thehuynh

+1

'gem which somegemname'显示的路径(我认为)当您执行'require'somegemname''时加载的文件。一般来说,宝石没有像你通过常规unix发现的程序那样有'可执行文件'。 –

31

如果你要使用的支票在脚本中,这给出了一个更好的输出(true或false)和相应的退出码:

gem list -i <gem_name> 

或者添加版本选项:

gem list -i <gem_name> -v version 
+0

'gem list'作为一个正则表达式的参数来匹配。所以如果你会说'gem list -i zip'这样的东西,可能会有很多不同的gem可能会匹配(在撰写本文时,'gem list -r zip | wc -l'返回197)。但是,如果您对zip gem特别感兴趣,则应该在正则表达式压缩文件中说出,例如'gem list -i^zip $'。否则'gem install spain_zip_codes && gem list -i zip' => true,这可能从来不是你想要的。 – Timo

+0

测试确切的名称使用'-e'像'gem list -ie zip' – artm