在宝石中扩展导轨模型

我想扩展在我的Rails应用程序中定义的模型调用配置。 出于某种架构原因,如果我可以将它扩展到宝石中,那将是非常棒的。

但在我的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类mRailtie <:: Rails :: Railtie config.after_initialize do :: Configuration.send(:include,ConfigurationExtension)end end end


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

链接地址: http://www.djcxy.com/p/81113.html

上一篇: Extend a rails model in a gem

下一篇: Cant create database for ruby on rails