我想扩展在我的 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)
在我的 railtie 文件模块 m class mRailtie < ::Rails::Railtie config.after_initialize do ::Configuration.send(:include, ConfigurationExtension) end end end