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!
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
Tampoco maneja parciales y cosas como 'render: action =>" view "'. Pero es un buen comienzo. – ujh