How to check if a gem is installed?

半城伤御伤魂 提交于 2019-12-20 09:29:30

问题


I installed data_mapper for a Sinatra project. Curious, why is it when I do gem install brew, I can $ which brew and get the path of its location and can't for data_mapper? This works for some gems and doesn't for others.

How do I verify a gem is installed properly? Would checking the version assure the gem is downloaded correctly?


回答1:


General solution

Try gem list to get the list of gems that are installed.

To test for a particular gem, you can use -i with a regex: gem list -i "^gem_name$". (Credit to Timo in the comments for this technique.)

Particular solution for OP

If you can't find data_mapper, it may be that the gem name is different from what you expect.

Also, if you're just doing which brew to find brew, you aren't finding the gem called brew, you're finding the location of the brew executable. Try gem which brew instead.

EDIT:

If you're looking for data_mapper by doing which data_mapper, you probably won't find it. which is a unix program for finding unix executables, and data_mapper probably doesn't have one.

Since your goal is to verify a gem is installed with the correct version, use gem list. You can limit to the specific gem by using gem list data_mapper.

To verify that it's installed and working, you'll have to try to require the gem and then use it in your code.




回答2:


In case you want to use the check in a script, this gives a better output (true or false) and appropriate exit code:

gem list -i <gem_name>

Alternatively add the version option:

gem list -i <gem_name> -v version


来源:https://stackoverflow.com/questions/22211711/how-to-check-if-a-gem-is-installed

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!