自动在控制器中包含 Gem [英] Automatically include a Gem in a controller

查看:31
本文介绍了自动在控制器中包含 Gem的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我目前正在使用一个 gem,它有一些我想包含到我的控制器类中的方法,但我希望它在安装时自动包含它自己.因此,例如,include MyGem 将不是必需的.

I am currently working a gem that has some metlhods that I want to include into my controller classes, but I would like it to automatically include itself upon installation. So, for example, include MyGem, will not be required.

我试过使用扶手带,但我不确定这是否是正确的方法,因为据我所知它不起作用.它看起来类似于:

I tried using a railtie, but I am unsure if that is the right way since it doesn't work as far as I can tell. It looks similar to:

require 'my_gem'

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

任何帮助都会很棒

推荐答案

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"] 

这篇关于自动在控制器中包含 Gem的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆