2009-02-11 8 views
12

Actualmente estoy trabajando en un proyecto de Ruby on Rails de gran tamaño. Tiene la edad suficiente y es lo suficientemente grande para que no quede claro si todas las vistas están realmente en uso.Encontrar vistas/parciales no utilizados en Ruby on Rails

¿Hay alguna secuencia de comandos/complemento que pueda generar una lista de archivos de vista no utilizados?

Respuesta

4

Escribí una secuencia de comandos para encontrar parciales/vistas sin usar. Supuse, sin embargo, que "sin usar" significa que hay presente un archivo de vista para el cual no se define ningún método de controlador (ninguno más). La secuencia de comandos no comprueba si se llama a la vista porque no hay un enlace desde la ruta predeterminada a ella. Esto hubiera sido mucho más complejo.

Coloque la siguiente secuencia de comandos en la carpeta de la escritura de la aplicación:

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

Es un poco hacker y sin terminar, pero hace el trabajo - al menos para mí.

ejecutarlo como esto (sólo es necesario cambiar la ejecución de bits primera vez con chmod):

chmod +x script/script_name 
./script/script_name 

disfrutar!

+0

Debe requerir config/medio ambiente. Al menos tenía que hacerlo, porque usamos gettext. Luego también puede eliminar la siguiente línea (que requiere rubygems, etc.) – ujh

+0

Tampoco maneja parciales y cosas como 'render: action =>" view "'. Pero es un buen comienzo. – ujh

3

Iterate a través de tus parciales, grep (o awk) el proyecto para el nombre del archivo. Ajuste su expresión regular de búsqueda para buscar "render: parcial" al comienzo de la línea para parciales genéricos (p. Ej., "_form").

+0

': partial' es opcional ahora así que esto no se aplica en absoluto ahora – Dorian

3

Sólo tiene que instalar y ejecutar el discover-unused-partials joya:

gem install discover-unused-partials 

discover-unused-partials rails_root_directory