如何找到我的Gemfile未使用的宝石,这样我可以其不再使用清理引用。
Answer 1:
如果有发现在Gemfile中未使用的宝石自动化的方式我很怀疑。
有人谁已经构建的应用程序随着时间的推移,它应该很容易手动识别已沿出于某种原因或其他的方式丢弃的宝石。
对于从别人那里继承的传统应用程序,这是一个非常艰巨的任务,人工识别未使用的宝石。 如果有全面的测试覆盖的系统,这将有助于去除通过试验和错误未使用的宝石,同时确保测试通过在Gemfile中的每个变化。
Answer 2:
使用Linux的文件访问权限一次看到实际上使用的是什么。
这就要求:
- 项目的宝石隔绝在RVM宝石
安装在分区宝石安装有选项的atime(在Ubuntu 12.04 strictatime):
须藤安装邻重新装载,strictatime /
完整的测试覆盖率(即我们将依靠测试运行,以更新文件访问时间)
注意时间和运行测试。 然后从你的gemdir,这样做:
ls --time-style long-iso -ltud1 $PWD/*/lib/** | grep "21:44" | sed s/.*gems.// | sed s/.lib.*// | sort -u
更改21:44到任何时候你在运行测试。
Answer 3:
任何宝石应该考虑删除,如果通过了所有测试中它的缺席。
假设你有很好的测试覆盖率 - 尤其是高层次的功能测试 - 你可以写一个脚本,同时有选择地删除一个宝石。 即运行所有测试N次,其中N是在你的Gemfile宝石的数量和每个测试有一级人失踪的宝石。 这将有助于淘汰宝石不拉他们的体重。
Answer 4:
您可以使用gem_bench宝石来分析你的Gemfile和识别宝石不需要在启动的时候需要。 从那里,它只是需要一点分析,以确定哪些宝石才能彻底清除。
要生成可从启动时被移除宝石的列表:
- 添加
gem 'gem_bench', :group => :console
到您的Gemfile。 - 运行
bundle install
- 运行
bundle exec rails console
使用以下命令: -
a = GemBench.check({verbose: true})
Answer 5:
还有就是bundle clean --force
命令删除外宝石Gemfile.lock
定义。
见包清洁 。
Answer 6:
运行测试,然后:
gem stale
其执行以下操作:
过时的命令列出了已安装的宝石中的所有文件的最新访问时间。
您可以使用此命令来发现的宝石,你不再使用的gem版本。