代码之家  ›  专栏  ›  技术社区  ›  ujh

在Ruby on Rails中查找未使用的视图/部分

  •  16
  • ujh  · 技术社区  · 17 年前

    我目前正在开发一个更大的Ruby on Rails项目。它已经足够旧,足够大,以至于不清楚是否所有视图都在使用中。

    4 回复  |  直到 17 年前
        1
  •  8
  •   Joshua Pinter    11 年前
        2
  •  7
  •   Shaun McDonald    16 年前

    我写了一个脚本来查找未使用的片段/视图。不过,我假设“未使用”意味着存在一个没有定义控制器方法的视图文件(不再)。脚本不会检查是否调用了视图,因为没有从默认路由到它的链接。这会复杂得多。

    将以下脚本放入应用程序的脚本文件夹中:

    #!/usr/bin/env ruby
    require 'config/environment'
    (Dir['app/controllers/*.rb'] - ['app/controllers/application.rb']).each do |c|
      require c
      base = File.basename(c, '.rb')
      views = Hash.new
      Dir["app/views/#{base.split('_')[0]}/*"].each do |v|
        views.store(File.basename(v).split('.')[0], v)
      end
      unused_views = views.keys - Object.const_get(base.camelcase).public_instance_methods - ApplicationController.public_instance_methods
      puts "Unused views for #{base.camelcase}:" if unused_views.size > 0
      unused_views.each { |v| puts views[v] }
    end
    

    它有点老套,也没有完成,但它确实完成了任务——至少对我来说是这样。

    按如下方式执行(您只需在第一次使用chmod更改执行位):

    chmod +x script/script_name
    ./script/script_name
    

    享受!

        3
  •  4
  •   Joshua Pinter    11 年前

    只需安装并运行 discover-unused-partials 宝石:

    gem install discover-unused-partials
    
    discover-unused-partials rails_root_directory
    
        4
  •  3
  •   Chris Lee    17 年前

    迭代你的分部,grep(或awk)项目的文件名。调整您的搜索正则表达式,在通用部分(例如“_form”)的行首查找“render:partial”。