Gemfile包含rails应用程序中使用的所有gem的列表,如何获得所有gem及其依赖项gem的列表?
Gemfile.lock可以为每个gem提供所有gem的列表及其依赖项gem。但是,如果gem是多个gem的依赖项,则列表包含gem的重复条目。以下是我的Gemfile.lock中的示例,其中activesupport (= 4.2.5)
是两个不同宝石actionview (4.2.5)
和activejob (4.2.5)
的依赖关系。
actionview (4.2.5)
activesupport (= 4.2.5)
builder (~> 3.1)
erubis (~> 2.7.0)
rails-dom-testing (~> 1.0, >= 1.0.5)
rails-html-sanitizer (~> 1.0, >= 1.0.2)
activejob (4.2.5)
activesupport (= 4.2.5)
globalid (>= 0.3.0)
可以从文件中过滤掉这些重复的条目来提取有问题的列表。但是,如果在我的应用程序中有50个宝石,那就是很多工作。我在寻找是否有人找到了更好的解决方案。
还有一种方法可以确定列表中的哪些宝石实际上是在应用程序中使用的,哪些只是膨胀了应用程序?
我的目标是清理一个有一些未使用的宝石的旧应用。
答案 0 :(得分:1)
对于初学者,您可以运行bundle clean --force
以从系统中删除未在Gemfile中使用的不需要的gem。但是,这不会删除您已包含但未使用的应用中的宝石。
由于这是您正在构建的应用,因此您应该可以手动删除宝石。这就是为什么TDD很重要,如果你可以移除一个宝石并且你的所有测试都通过了,你可以放心地假设你不再需要那个宝石。
我真的不知道我是否会相信自动化工具。手动执行此操作可能更安全。这个过程可能很乏味,但最后你会感谢自己。