2009-08-07 8 views
14

Tengo problemas para averiguar cómo llamar a un método desde un módulo principal en una clase.Llamar a los métodos del módulo principal de una clase anidada

Quiero llamar a las funciones del módulo desde el módulo principal en mis clases anidadas, pero parece que no se puede encontrar la manera de hacerlo.

ejemplo:

module Awesome 
    class Checker 
    def awesome? 
     awesome_detection 
    end 
    end 

    module_function 
    def awesome_detection 
    true 
    end 

end 

Si llamo Awesome::Checker.new.awesome?, es consciente de awesome_detection

¿Alguna idea de lo que me falta?

+0

Recién recordado - Me di cuenta de que podía hacer 'include Awesome' en el corrector, pero quiero saber de otra manera si tengo varias clases dentro de' Awesome'. –

Respuesta

22
#!/usr/bin/env ruby -wKU 

module Awesome 

    class Checker 
    def awesome? 
     Awesome.awesome_detection 
    end 
    end 

    def self.awesome_detection 
    puts "yes" 
    end 

end 

Awesome::Checker.new.awesome? 
# => yes 
+0

El 'module_function' en la pregunta original era mejor. Fijar el 'def awesome?' Para llamar a 'Awesome.awesome_detection' hubiera sido suficiente. –

Cuestiones relacionadas