Способ добавления before_filter из движка в приложение - PullRequest
5 голосов
/ 06 сентября 2011

Без особого кода это просто расплывчато, но я предоставлю все, что смогу.

Учитывая рельсовый движок, базовый движок, а не монтируемый движок в своем собственном пространстве, как сделать методы из движка доступными для приложения в качестве before_filter для контроллеров приложений?

Я просматривал код Devise, потому что то, что я хочу, похоже на мой опыт работы с Devise, но, признаюсь, я не очень понимаю, что я собираюсь описать.

Я могу сделать это, если поместить include Myengine::Mymodule в контроллеры приложений, где я хочу, чтобы методы были доступны для фильтрации, но я хочу, чтобы можно было просто использовать методы без необходимости включать модули.

Это последнее препятствие в попытке превратить приложение rails в движок, который будет использоваться несколькими приложениями rails, и любые рекомендации по получению указаний по правильному пространству имен, конфигурации модуля и т. Д. Приветствуются.

1 Ответ

5 голосов
/ 06 сентября 2011

Если я вас правильно понял, вы можете использовать инициализатор, например:

module MyEngine
    class Engine < Rails::Engine
        initializer  "myengine.load_helpers" do
            ActiveSupport.on_load(:action_controller) do
                include MyEngine::Helpers
            end
        end
    end
end
...