自动在控制器中包含Gem

时间:2011-08-15 14:22:22

标签: ruby-on-rails ruby-on-rails-3

我目前正在使用一些gem,它有一些我希望包含在我的控制器类中的metlhods,但我希望它能在安装时自动包含它。因此,例如,include MyGem将不再需要。

我尝试使用铁路,但我不确定这是否是正确的方法,因为它无法正常工作。它看起来类似于:

require 'my_gem'

module MyGem
  class Railtie < Rails::Railtie
  initializer "my_gem.method_items" do
   ActionController::Base.send :include, MethodItems
  end
 end
end

任何帮助都会很棒

1 个答案:

答案 0 :(得分:2)

module MyGem
  module InstanceMethods
    def foo
      "bar"
    end
  end
end

module MyGem
  class Engine < Rails::Engine
    initializer "testing" do |app|
      ActionController::Base.send :include, MyGem::InstanceMethods
    end
  end
end

然后在控制台中:

ActionController::Base.instance_methods.grep(/foo/)
=> ["foo"]