我一定错过了一些东西,因为昨晚我很惊讶地发现谷歌搜索check gem dependencies
而且类似的并没有透露答案。
我基本上是在大致相当于rpm -V
之后 - 这个命令将通过一些或所有已安装的宝石,并确保它们的依赖项也已安装。由于gem install
默认情况下会安装任何相关的宝石,因此通常不需要这样做;但是,如果你gem uninstall
一个宝石,并告诉它继续卸载,即使其他宝石依赖于正在卸载的宝石,那么显然你最终会破坏依赖。问题是,如何在不安装/卸载/更新任何宝石的情况下列出那些破坏的依赖项?
N.B。涉及Bundler的答案对我来说没什么用处,因为我仍然因为各种原因而被困在Rails 2.x上。
答案 0 :(得分:16)
:
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依赖关系(就像我一样),那么您可以试试这个脚本。