2011-08-05 3 views
0

私は、ActiveRecordを拡張している既存のRubyクラス、例えばAをリファクタリングして、半二重のRailsパイプラインを実装しています。類似した2つのARクラス(現在は浅いラッパー)に混在しています。現在のクラスの固有クラスへのメソッドの結合

Aの肉を取り、それをMに微分するとき、Aのインスタンスメソッドは単にMのメソッドになり、AのクラスメソッドはMのClassMethodsサブモジュールに入り、クラスレベルでA 。Mの包含されたフックとよく知られているイディオムを介して、伸びる。

しかし、Aはまったくのクラスではありません。クラスメソッドを当然理解していないDelayedJobのクラスメソッドを使用しています。したがって、我々は今

class A 
    ... 
    def old_plain_vanilla_class_method 
    ... 
    end 
    class << self 
    def new_eigenclassed_class_method 
     ... 
    end 
    ... 
    end 
    ... 
end 

質問としてそれらを定義し、Aのeigenclassへの元のクラスメソッドの一部を移動し、どのように我々はMで、ので、それはAのeigenclassにすぐに戻って混入することを表していますか?

答えて

1

ない私はよく(多くのコードをしてください)あなたを理解していることを確認していますが、このような何かすることはできません。self.includedとC、およびM.includedでc.classを交換する場合

module M 
    def M.included(c) 
    class << c.class 
     def foo 
     "foo" 
     end 
    end 
    end 
end 
+0

作品。 – Alexy

関連する問題