2009-09-02 1 views
0

Я пишу плагин, который добавляет метод контроллерам и объявляет его как вспомогательный метод. Если бы это было сделано статически (а не через плагин), это выглядело бы примерно так:Как я могу программно определить, какие методы были объявлены контроллером в Rails как «вспомогательные» методы?

# in RAILS_ROOT/app/controllers/stuffed_animals_controller.rb 
class StuffedAnimalsController < ActionController::Base 

    private 

    def bear 
    'Teddy Bear' 
    end 

    helper_method :bear 

end 

# in RAILS_ROOT/app/views/stuffed_animals/index.html.erb: 
<%= bear -%> 

Это работает просто отлично. Я хочу проверить, что :some_helper_methodфактически вспомогательный метод. Я попытался это:

def test_declared_bear_as_helper_method 
    assert StuffedAnimalsController.helper_methods.include?(:bear) 
end 

К сожалению, ActionController::Base не имеет метода :helper_methods класса. Кто-нибудь знает, где я могу получить список вещей, которые предоставляет класс через :helper_method?

ответ

0

Получил это!

def test_declared_bear_as_helper_method 
    helper = Object.new 
    helper.extend StuffedAnimalsController.master_helper_module 
    assert helper.respond_to?(:bear) 
end