13

我一定错过了一些东西,因为昨晚我惊讶地发现谷歌搜索check gem dependencies和类似的东西并没有揭示这个问题的答案。

我基本上是在大致相当于rpm -V- 一个命令将通过我安装的部分或全部 gem 并确保它们的依赖项也已安装。由于gem install默认情况下会安装任何依赖的 gem,通常这不是必需的;但是,如果您gem uninstall是 gem 并告诉它继续卸载,即使其他 gem 依赖于正在卸载的 gem,那么显然您最终会遇到依赖关系损坏。问题是,如何在不安装/卸载/更新任何 gem 的情况下列出那些损坏的依赖项?

NB 涉及 Bundler 的答案对我来说用处不大,因为由于各种原因我仍然停留在 Rails 2.x 上。

4

4 回答 4

17

在 bash 外壳中:

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

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

于 2010-11-12T14:05:47.000 回答
5

我知道您说过您对有关 Bundler 的答案不感兴趣,但是……</p>

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

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

于 2010-11-09T12:28:16.723 回答
3

你试过跑步gem update吗?这将为您的所有 gem 运行所有依赖项测试。您可以运行它以安装到单独的目录中。

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

于 2010-11-09T14:25:03.483 回答
1

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

https://gist.github.com/1124953

于 2011-08-04T10:58:21.980 回答