【发布时间】:2013-10-03 19:25:25
【问题描述】:
我正在寻找一种简单但很好的方法来清理 gemfile 并使 Rails 启动更快。 如何获取所有必需 gem 与所有已加载 gem 的列表。
【问题讨论】:
标签: ruby-on-rails rubygems gemfile
我正在寻找一种简单但很好的方法来清理 gemfile 并使 Rails 启动更快。 如何获取所有必需 gem 与所有已加载 gem 的列表。
【问题讨论】:
标签: ruby-on-rails rubygems gemfile
bundle clean --force 将删除以前安装但当前未在当前 Gemfile.lock 清单中使用的旧 gem(或当前使用的旧版本的 gem)。
【讨论】:
首先,如果你想查看你的项目使用了哪些gem,我邀请你在你的项目文件夹根目录下运行gem server,然后转到http://0.0.0.0:8808/
您将能够了解您的项目正在使用的所有 gem 的依赖关系。它还会向您显示同一 gem 的所有版本。
要删除旧版本的 gem,你可以像 @changerainbows 提到的那样运行
bundle clean --force
在这一步之后,再次运行您的 gem 服务器并观察结果,这是一个包含所有依赖项的干净且易于理解的 gem 列表。
【讨论】:
这取决于你在这里追求什么。
如果您要删除旧的、未使用的 gem 版本,请使用 bundle clean。
如果您在开发过程中一直在添加 gem,但忘记了实际使用的 gem,并且测试覆盖率很高,那么请尝试 this answer。
如果您想将启动时拉入的 gems rails 数量减少到最低限度,请尝试gem_bench。
【讨论】:
我认为这是不可能的。当您的 APP 启动时,它会从 Gemfile.lock 加载 gem,但它不知道您的代码中是否需要它们(gems)。当某些需要的 gem 丢失(如果你从 Gemfile 中删除它)时,APP 会通过引发异常来通知你,但是这可能在任何时候发生(而不是在启动你的 APP 期间)。
因此,如果您正在寻找清理宝石列表的方法,我认为最好的方法是手动完成(我知道这并不容易)。分析每个 gem 以找出它提供的功能并决定(或在您的代码中查找)是否需要它。此外,测试(如果你有的话)应该会对你有很大帮助。
【讨论】: