在gem中扩展rails模型

我想扩展我的rails应用程序中定义的模型调用配置。 出于某些建筑原因,如果我可以在gem中扩展它将会很棒。

但是在我的gem foo.rb文件中,如果我调用我的配置类:

Configuration.class_eval do ... end 

它给我这个错误:

configuration: undefined method 'config' for nil:NilClass (NoMethodError)

如果我试过这个:

 class Configuration TEST = [:foo, :foo2].freeze end 

我无法访问我的rails应用程序中定义的activerecord类。

有没有办法重载gem中的某些rails类?

编辑:像这样的工作:)

 module m module ConfigurationExtension extend ActiveSupport::Concern included do CONSTAZ = [:foo].freeze end module ClassMethods def foo1 "foo1" end end module InstanceMethods def foo2 "foo2" end end end end require 'm/mailtie.rb' if defined?(Rails) 

在我的railstie文件模块m类mRailtie <:: Rails :: Railtie config.after_initialize do :: Configuration.send(:include,ConfigurationExtension)end end end

假设您使用gem的地方会有特定的类,这是非常错误的。 相反,你应该在gem中创建一个模块,并在你想要的模型中包含/扩展/关注它(在这种情况下是Configuration