如何在命令行中检查gem是否在包中

时间:2016-10-13 22:44:33

标签: ruby-on-rails ruby bundler

我的问题就像Programmatically check if gem in bundle?,除了我想要从命令行检查,而不是从程序中检查。

我已经为Rails项目设置了代码的CI,我的一个测试涉及运行haml-lint。今天,我遇到了一个失败,因为没有安装haml-lint的项目的旧分支被推送到存储库。我希望能够测试是否安装了haml-lint,因此如果没有安装haml-lint,我将不会尝试运行它。

我能做到

bundle exec haml-lint --version

或可能bundle list加上一些文字处理,但我想知道是否有更简洁和意图揭示的内容。

2 个答案:

答案 0 :(得分:1)

正在运行

bundle list | grep haml-lint 

会为你效劳。但是为此实现程序代码显然是滥用Rails方式。为了避免这样的事情,你最好将Gemfile.lock保存在你的存储库中,如果你出于某种未知原因删除了所需的gems,它就会失败。因为在Rails中如何处理事情,以及我们为什么需要CI,在生产之前避免这样的事情。建立额外的代码,以避免杀死所有奖金。

答案 1 :(得分:0)

您可以从控制台执行gem('haml-lint'),或者可以使用grep 'haml-lint' Gemfile在命令行中查找字符串。