0

私たちのRailsアプリでいくつかのActiveResourceサブクラスからgemを構築するように依頼されました。

難しいのは、self.site呼び出しでRails環境ファイルに設定された定数を使用することです(開発、テスト、および本番環境が異なるWebサイトを指すようにします)。新しいgemをGemfileに追加した後、アプリが環境ファイルのにgemをロードしていることがわかりました。そのため、ActiveResourceモデルがアプリを壊します。

私は何をすべきか?

仕様:Rails 3.2.3、Ruby 1.9.3

4

1 に答える 1

0

私がやったことは、メソッドが最初に呼び出されたときにのみ、 self.siteandself.formatとをオーバーライドしself.connectionて、環境定数を検索できるようにすることでした。

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

MyActiveResource次に、から派生するクラスを拡張しActiveResource::Baseます。

于 2012-07-23T21:07:06.993 に答える