2016-10-13 9 views
1

質問はProgrammatically check if gem in bundle?のようですが、プログラム内からではなくコマンドラインからチェックしたいと思っています。宝石がバンドルに入っているかどうかを確認する方法

私は、RailsプロジェクトのコードシップでCIをセットアップしました。私のテストの1つは、haml-lintを実行することです。今日では、haml-lintがインストールされていないプロジェクトの古いブランチがリポジトリにプッシュされたため、失敗しました。 haml-lintがインストールされているかどうかをテストできるようにして、インストールされていなければ実行しないようにします。

私は

bundle exec haml-lint --version 

または多分bundle listプラスいくつかのテキスト処理を行うことができますが、私はより簡潔かつ意図-暴露の何かがあるかどうかを知りたいです。

+1

あなたのシェルの 'bundle show haml && echo $?'は、もし宝石が存在すれば0を返し、0以外の何かを返し、それを '[[..]]'に渡すことができます。 – bjhaid

+0

@bjhaidあなたはそのコメント答えに? –

答えて

1

bundle list | grep haml-lint 

を実行すると、あなたのために動作します。しかし、そのためのプログラムコードを実装することは、Railsのやり方をはっきりと濫用しています。そのようなことを避けるためには、Gemfile.lockをリポジトリに保存しておき、不明な理由で必要な宝石を取り除いた場合に失敗させるようにしてください。 Railsでどのように扱われるのかということで、CIを必要とする理由は、生産を打つ前にそのようなことを避けるためです。それのすべてのボーナスを殺すことを避けるために、追加コードを作成する。

+0

私が扱っているシナリオは、宝石を削除する新しいバージョンではなく、問題の宝石を組み込んでいない比較的古いバージョンです。 –

+0

どのように変化するのですか?あなたはCIを持っています。 CIが働いた。ここで、CIが機能しないようにする方法を尋ねます。あなたがあなたのことをしている間、CIはその仕事をしましょう。 –

0

コンソールからgem('haml-lint')を入力するか、コマンドラインでgrep 'haml-lint' Gemfileという文字列をgrepすることができます。

+0

予期しないトークン '' haml-lint'''の近くで '-bash:syntax error 'が発生しました。あなたはRailsコンソールを参照していましたか?私はコマンドラインからやってみることを頼んでいました。 –

+0

'grep 'haml-lint' Gemfile'(私の答えによると)はコマンドラインから動くでしょう。 @ sergeymoiseevの 'bundle list'へのgrepコマンドでの配管による解決策も、コマンドラインから機能します。 –

関連する問題