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

问题描述 投票:0回答:5

我目前正在开发一个较大的 Ruby on Rails 项目。它足够旧且足够大,不清楚是否所有视图都在实际使用中。

是否有任何脚本/插件可以生成未使用的视图文件列表?

ruby-on-rails ruby
5个回答
8
投票

7
投票

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

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

#!/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

享受吧!


5
投票

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

gem install discover-unused-partials

discover-unused-partials rails_root_directory

3
投票

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


0
投票

邪恶火星人有一个 RSpec 脚本,它会在测试运行后告诉您哪些视图在测试期间不会被调用:

https://github.com/evilmartians/terraforming-rails/tree/master/tools/templates_tracker

加入规范/支持并以 TT=1 运行

wget https://raw.githubusercontent.com/evilmartians/terraforming-rails/refs/heads/master/tools/templates_tracker/templates_tracker_rspec.rb \
 -O spec/support/templates_tracker.rb

TT=1 rspec
© www.soinside.com 2019 - 2024. All rights reserved.