12


6

インストールしたRuby gemのすべての依存関係が満たされていることを確認するにはどうすればよいですか?

昨夜、「gemの依存関係を確認する」などのグーグル検索で答えが明らかにならないことに驚いたので、何かを見逃しているに違いありません。

基本的には、「rpm -V」とほぼ同じです。インストール済みのGemの一部またはすべてを調べ、それらの依存関係もインストールされることを確認するコマンドです。 `gem install`はデフォルトで依存するgemをインストールするため、通常これは必要ありません。ただし、gemを「gem uninstall」して、他のgemがアンインストールされているgemに依存しているにもかかわらず、アンインストールを続行するように指示すると、明らかに依存関係が壊れてしまいます。 問題は、gemをインストール/アンインストール/更新せずに、壊れた依存関係をどのようにリストするかです。

N.B. Bundlerに関係する答えは、私にとってはあまり使い道がありません。なぜなら、さまざまな理由でRails 2.xに固執しているからです。

4 Answer


16


bashシェルの場合:

gem list --no-version > list
gem dependency --pipe > depends
grep -v -f list depends > failed.txt
rm list
rm depends

failed.txtには、インストールされていないすべての依存関係のリストが含まれるようになります。


5


Bundlerについての回答には興味がないと言っていましたが、…

Bundlerはgemの依存関係の解決を処理し、Rails 2.3と互換性があります。 私はBundlerを多くのRails 2アプリで使用しましたが、問題はありませんでした。

ここにBundler on Rails 2.3をインストールする手順があります:http://gembundler.com/rails23.html


3


「gem update」を実行しようとしましたか? これにより、すべてのgemのすべての依存関係テストが実行されます。 これを実行して、別のディレクトリにインストールできます。

{空} [編集]また、「gem check」を実行するとどうなりますか? `gemdependency`はすべてのgem依存関係をリストします。 何かがインストールされているかどうかが表示されない場合は、出力を `check`などのコマンドにパイプして、それらのgemがインストールされているかどうかを確認できると確信しています。 [/edit]


1


アプリケーションのBundlerに切り替えることに間違いなく同意します。 システムにインストールされたgemの不満足なgem依存関係をすばやく特定する方法を探している場合(私がそうだったように)、このスクリプトを試してみてください。