2012-06-26 2 views
0

Google의 Rails 앱에서 여러 ActiveResource 서브 클래스로 보석을 만들도록 요청 받았습니다.디자인 조언 : Gemify ActiveResource 서브 클래스

self.site 호출은 Rails 환경 파일에서 상수 세트를 사용하므로 (dev, test 및 production이 다른 웹 사이트를 가리킬 수 있도록) 어려움이 있습니다. Gemfile에 새 보석을 추가 한 후, 응용 프로그램이 환경 파일을로드하기 때문에 내 ActiveResource 모델에서 응용 프로그램을 중단합니다.

어떻게해야합니까?

사양 : 내가 그들에게 일정한 환경 메소드 호출 만에 처음으로 찾아시키는, self.siteself.formatself.connection을 무시하고 일을 결국 무엇을, 루비 1.9.3

답변

0

을 3.2.3 레일 :

module MyActiveResource 

    # A flag to indicate whether the environment variable has already been sought 
    attr_accessor :active_record_fields_set 

    # Set site & format if not set 
    def connection(refresh=false) 
     set_my_active_record_fields unless active_record_fields_set 
     super(refresh) 
    end 

    # Set site & format if not set 
    def site 
     set_my_active_record_fields unless active_record_fields_set 
     super 
    end 

    # Set site & format if not set 
    def format 
     set_my_active_record_fields unless active_record_fields_set 
     super 
    end 

    # Set site & format 
    def set_my_active_record_fields 
     self.active_record_fields_set = true 
     self.site = MY_CONSTANT 
     self.format = ActiveResource::Formats::XmlFormat 
    end 

end 

그런 ActiveResource::Base에서 내려 내 수업에 MyActiveResource을 확장합니다.