2009-02-11 11 views
12

Ich arbeite derzeit an einem größeren Ruby on Rails-Projekt. Es ist alt genug und groß genug, dass es nicht klar ist, ob alle Ansichten tatsächlich verwendet werden.Suche nach unbenutzten Sichten/Teilbildern in Ruby on Rails

Gibt es ein Script/Plugin, das eine Liste von nicht verwendeten View-Dateien erzeugen kann?

Antwort

4

Ich schrieb ein Skript, um nicht verwendete Partials/Ansichten zu finden. Ich nahm jedoch an, dass "unbenutzt" bedeutet, dass eine View-Datei vorhanden ist, für die keine Controller-Methode mehr definiert ist. Das Skript überprüft nicht, ob die Ansicht aufgerufen wird, da keine Verknüpfung von der Standardroute zu dieser Ansicht besteht. Das wäre viel komplexer gewesen.

Legen Sie das folgende Skript in der Skriptordner der Anwendung:

#!/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 ist irgendwie hackish und unfertig, aber es macht den Job - zumindest für mich.

Führen Sie es wie folgt aus (Sie brauchen nur das Ausführen-Bit das erste Mal mit chmod ändern):

chmod +x script/script_name 
./script/script_name 

Viel Spaß!

+0

Sie sollten config/Umwelt erfordern. Zumindest musste ich, weil wir gettext verwenden. Dann können Sie auch die nächste Zeile entfernen (erfordert Rubygems usw.) – ujh

+0

Es behandelt auch keine Partials und Sachen wie 'render: action =>" view "'. Aber es ist ein guter Anfang. – ujh

3

Iterieren Sie durch Ihre Partials, grep (oder awk) das Projekt für den Namen der Datei. Passen Sie Ihre Suchregex an, um nach "render: partially" am Zeilenanfang für generische Teiltöne zu suchen (zB "_form").

+0

': Teilweise 'ist jetzt optional, so dass dies jetzt überhaupt nicht gilt – Dorian

3

Einfach zu installieren und das discover-unused-partials gem laufen:

gem install discover-unused-partials 

discover-unused-partials rails_root_directory