2009-02-11 45 views
12

我目前正在研究一个庞大的Ruby on Rails项目。它已经足够大和足够大,以至于不清楚所有视图是否都在使用中。在Ruby on Rails中查找未使用的视图/部分

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

回答

4

我写了一个脚本来查找未使用的partials/views。尽管如此,我认为“未使用”意味着一个视图文件不存在,其中没有定义控制器方法(不再)。该脚本不检查视图是否被调用,因为没有从默认路由到它的链接。这会更加复杂。

放置在应用程序的脚本文件夹下面的脚本:

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

这是有点hackish的和未完成的,但它的工作 - 至少对我来说。

执行像这样(你只需要改变执行位首次使用chmod):

chmod +x script/script_name 
./script/script_name 

享受!

+0

如果您需要配置/环境。至少我必须这样做,因为我们使用gettext。然后你也可以删除下一行(需要rubygems等) – ujh 2009-02-12 09:44:28

+0

它也不会处理partials和类似`render:action =>“view”`的东西。但这是一个好的开始。 – ujh 2009-02-12 09:48:04

3

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