class A
do_something_from_b
def method_in_a
end
end
module B
def self.included base
base.extend ClassMethods
end
module ClassMethods
def do_something_from_b
A.class_eval do
alias_method :aliased_method_in_a, :method_in_a
end
end
end
end
A.send(:include, B)
do_somethind_from_b
が呼び出されるとき、method_in_a
がまだ存在していないので、このコードは失敗しますロードされます。実行コードが完全に
だから、それが完全にロードされた後、class A
にフックclass A
の終わりにdo_something_from_b
コールを入れせずにする方法は何ですか?
:指摘したように、コードには他にも問題がありますが、それはポイントの横にあります。私は、私が達成したいことを説明するだけで、の後にいくつかのコードが実行されます。クラスは閉じられています(問題なく再開できます)。そして今、私はそれがおそらく不可能であることを知っています。
ありがとうございます!
「この作品を作るにはどうすればいいのか」という壊れたものがコメントアウトされた実例を投稿することをお勧めします。この場合、それは単なる1行であるべきですが、このコードはさまざまな方法で壊れているようです... – DigitalRoss
また、rubyクラスはオープンなので、クラスが完全にロードされた時点は決してありません。 –
サム、リマインダーのおかげで。だから私はそれのために、私が望むことをするのは不可能だと思う。 – Ivan