2012-08-27 19 views
8

he definido un módulo Vehicle como tales¿Cómo encontrar métodos simples particulares

module Vehicle 
    class <<self 
    def build 
    end 

    private 

    def background 
    end 
    end 
end 

Una llamada a Vehicle.singleton_methods[:build] rendimientos.

¿Cómo puedo inspeccionar todos los métodos de singleton privados definidos en Vehicle?

Respuesta

8

En Rubí 1.9+, puede simplemente hacer:

Vehicle.singleton_class.private_instance_methods(false) 
#=> [:background] 

en Ruby 1.8, las cosas son un poco más complicado.

Vehicle.private_methods 
#=> [:background, :included, :extended, :method_added, :method_removed, ...] 

devolverá todos los métodos privados. Puedes realizar un filtrado la mayor parte de los declarados fuera haciendo

Vehicle.private_methods - Module.private_methods 
#=> [:background, :append_features, :extend_object, :module_function] 

pero eso no quiere llegar a ser muy de todos ellos, usted tiene que crear un módulo para hacer eso

Vehicle.private_methods - Module.new.private_methods 
#=> [:background] 

Este último tiene el desafortunado requisito de crear un módulo solo para descartarlo.

Cuestiones relacionadas