2017-02-04 3 views
-1

Например, у меня есть этот код:Ruby: как я могу найти все методы класса модуля

module ExampleModule 
    def self.module_method 
    end 

    def normal_method 
    end 
end 

Если я пытаюсь вызвать ExampleModule.instance_methods и я могу видеть только normal_method. Я искал также в singleton_class, но выглядит как Рубин не ставит метод класса внутри singleton class:

ExampleModule.singleton_class.each do |method| 
    print method 
end 

Как можно увидеть self.module_method (и только этот метод, а не другой родительский метод модуля ExampleModule).

Благодаря

+0

'ExampleModule.methods' – trueinViso

+0

Я бы не назвал это "метапрограммирования". Это просто использование простого старого 'send'. –

+0

@trueinViso, но он покажет все методы. Я просто хочу показать только настраиваемый метод в этом модуле. –

ответ

5
ExampleModule.methods(false) 
    #=> [:module_method] 
ExampleModule.singleton_class.instance_methods(false) 
    #=> [:module_method] 
ExampleModule.instance_methods(false) 
    #=> [:normal_method] 
Смежные вопросы