如何在主应用程序中合并Rails引擎ApplicationController方法?

Car*_*ole 2 ruby-on-rails ruby-on-rails-3

如何将Rails引擎ApplicationController(它的方法)合并到主应用程序中?我需要访问这些引擎控制器方法,我想在不使用主应用程序的ApplicationController中的"Include"的情况下执行此操作.

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

以上内容发布在一个从引擎到应用程序添加before_filter的方法,但我的理解是帮助程序只能查看,而我需要在我的控制器中访问它们.

Tra*_*tto 7

之前我做过一个名为dynamic_menu的rails gem

基本上它看起来像

require 'dynamic_menu'

module DynamicMenu
  class Engine < Rails::Engine
    initializer "dynamic_menu.menu_items" do |app|
      ActionController::Base.send :include, DynamicMenu::MenuItems
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

所以我会假设你想要的那个

require 'myEngine'
class Engine < Rails::Engine
  initializer "myengine.load_helpers" do |app|
    ActionController::Base.send :include, MyEngine::Helpers
  end
end
Run Code Online (Sandbox Code Playgroud)

您想要添加您在lib中使用的.rb文件的要求,然后它只涉及将模块发送到ActionController :: Base

github上看到我的宝石,它本质上非常简单,并且可以提供一些指导.评论,我可以解释一下.