2010-11-16 5 views

Répondre

3

Je ne pense pas qu'il y ait un moyen facile de le faire correctement, mais comme une approximation 1.9 vous pourriez trouver le source_location pour toutes les méthodes de la classe:

class Class 
    def source_files 
    methods.collect { |method_name| 
     method(method_name).source_location[0] # just the filename, not the line number 
    } | 
    instance_methods.collect { |method_name| 
     instance_method(method_name).source_location[0] 
    } 
    end 
end 

Cela vous donnera également la des fichiers définissant des méthodes héritées de la superclasse ou des modules inclus, dont je ne suis pas sûr si vous le souhaitez. Il existe des moyens de modifier une classe en dehors de la définition de méthodes, mais cela ne les détecte pas, donc ce n'est pas parfait.

+0

Encore, c'est un bon début. –

Questions connexes