decir, que tienen las siguientes 2 clases:detectar que un método no fue anulada
class A
def a_method
end
end
class B < A
end
¿Es posible detectar desde dentro (una instancia de) clase B que el método a_method
sólo es se define en la superclase, por lo que no se anula en B?
Actualización: la solución
Aunque he marcado la respuesta de Chuck como "aceptada", más adelante Paolo Perrota hizo darme cuenta de que la solución puede parecer ser más simple, y es probable que funcionen con versiones anteriores de Ruby, también.
Detectar si "un_metodo" se anula en B:
B.instance_methods(false).include?("a_method")
Y para los métodos de clase que utilice singleton_methods
parecida:
B.singleton_methods(false).include?("a_class_method")
¡Muy bien, gracias! Especialmente feliz después de ver la versión de Ruby que originalmente mencionaste pasar de 1.9 a 1.8.7 (que en realidad estoy usando). – mxgrn
Sí, estaba un poco confuso sobre eso. Al principio pensé que funcionaba con 1.8.7, luego vi que 'Method # owner' no estaba en los documentos 1.8.7 ri, así que lo cambié a 1.9, entonces realmente verifiqué si el método existía en 1.8.7 y vi que lo tuve bien la primera vez. Me alegro de que ayude. – Chuck