如何找到我的Gemfile未使用的宝石(How to find unused gems in my

2019-07-18 05:40发布

如何找到我的Gemfile未使用的宝石,这样我可以其不再使用清理引用。

Answer 1:

如果有发现在Gemfile中未使用的宝石自动化的方式我很怀疑。

有人谁已经构建的应用程序随着时间的推移,它应该很容易手动识别已沿出于某种原因或其他的方式丢弃的宝石。

对于从别人那里继承的传统应用程序,这是一个非常艰巨的任务,人工识别未使用的宝石。 如果有全面的测试覆盖的系统,这将有助于去除通过试验和错误未使用的宝石,同时确保测试通过在Gemfile中的每个变化。



Answer 2:

使用Linux的文件访问权限一次看到实际上使用的是什么。

这就要求:

  1. 项目的宝石隔绝在RVM宝石
  2. 安装在分区宝石安装有选项的atime(在Ubuntu 12.04 strictatime):

    须藤安装邻重新装载,strictatime /

  3. 完整的测试覆盖率(即我们将依靠测试运行,以更新文件访问时间)

注意时间和运行测试。 然后从你的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和识别宝石不需要在启动的时候需要。 从那里,它只是需要一点分析,以确定哪些宝石才能彻底清除。

要生成可从启动时被移除宝石的列表:

  1. 添加gem 'gem_bench', :group => :console到您的Gemfile。
  2. 运行bundle install
  3. 运行bundle exec rails console使用以下命令:
  4. a = GemBench.check({verbose: true})


Answer 5:

还有就是bundle clean --force命令删除外宝石Gemfile.lock定义。

见包清洁 。



Answer 6:

运行测试,然后:

gem stale

其执行以下操作:

过时的命令列出了已安装的宝石中的所有文件的最新访问时间。

您可以使用此命令来发现的宝石,你不再使用的gem版本。



文章来源: How to find unused gems in my Gemfile