如何检查已安装的Ruby gem的所有依赖项是否满足?

时间:2010-11-09 11:20:03

标签: ruby dependencies gem verification

我一定错过了一些东西,因为昨晚我很惊讶地发现谷歌搜索check gem dependencies而且类似的并没有透露答案。

我基本上是在大致相当于rpm -V之后 - 这个命令将通过一些或所有已安装的宝石,并确保它们的依赖项也已安装。由于gem install默认情况下会安装任何相关的宝石,因此通常不需要这样做;但是,如果你gem uninstall一个宝石,并告诉它继续卸载,即使其他宝石依赖于正在卸载的宝石,那么显然你最终会破坏依赖。问题是,如何在不安装/卸载/更新任何宝石的情况下列出那些破坏的依赖项?

N.B。涉及Bundler的答案对我来说没什么用处,因为我仍然因为各种原因而被困在Rails 2.x上。

4 个答案:

答案 0 :(得分:16)

bash shell中的

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

failed.txt现在将包含未安装的所有依赖项的列表。

答案 1 :(得分:5)

我知道你说你对Bundler的答案不感兴趣,但是......

Bundler将为您处理gem依赖项解析并与Rails 2.3兼容。我已经将Bundler与许多Rails 2应用程序一起使用,并没有遇到任何问题。

这里有关于在Rails 2.3上安装Bundler的说明:http://gembundler.com/rails23.html

答案 2 :(得分:3)

您是否尝试过gem update?这将运行所有宝石的所有依赖性测试。您可以运行此命令以安装到单独的目录中。

[编辑] 此外,当您运行gem check时会发生什么? gem dependency将列出所有gem依赖项。我很确定如果它没有告诉你是否安装了某些东西,你可以将输出传递给像check这样的命令来查看是否安装了这些宝石。 [/编辑]

答案 3 :(得分:1)

我绝对同意切换到Bundler的应用程序。如果您正在寻找一种方法来快速识别系统上已安装宝石的未满足的gem依赖关系(就像我一样),那么您可以试试这个脚本。

https://gist.github.com/1124953