2013-06-20 2 views
1

내 레일 앱에 정의 된 모델 호출 구성을 확장하고자했습니다. 어떤 건축 학적 이유로, 보석으로 확장 할 수 있다면 좋을 것입니다.보석으로 레일 모델을 확장

Configuration.class_eval do ... end 

그것은 나에게이 오류 반환 :

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

을 그리고 난이 시도하는 경우 :

하지만 내 보석 foo.rb 파일에 난 내 구성 클래스를 호출하는 경우

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

내 rails app에 정의 된 activerecord 클래스에 더 이상 액세스 할 수 없습니다.

일부 레일 클래스에 과부하를 걸 수있는 방법이 있습니까?

편집 :이 작품 :) 내 railtie 파일 모듈 m 클래스 mRailtie < :: 레일 :: Railtie config.after_initialize이 ( :: Configuration.send을에서

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) 

같은 뭔가 : 포함, ConfigurationExtension) 끝 끝 끝

답변

1

여기에 보석을 사용하는 곳에서는 특정 클래스가 될 것입니다. 대신에 젬에 모듈을 만들고 원하는 모델에 포함/확장/관련시켜야합니다 (이 경우 Configuration)

관련 문제