アプリ初期化子を介してエンジン 2 からの懸念でエンジン 1 からモデルを拡張しようとしていますが、奇妙な動作が発生しています。
懸念
module Engine2
module Concerns
module MyConcern
extend ActiveSupport::Concern
included do
puts "Concern included!"
end
def jump
puts 'Jumping!!!!'
end
end
end
end
初期化子
require 'engine2/my_concern'
module Engine1
class Member
include Engine2::Concerns::MyConcern
end
end
アプリケーションを起動するConcern included!
と、コンソールに期待どおりのメッセージが表示され、Member
クラスはメソッドを呼び出すことができますjump
が、ホスト アプリのコードを変更するとすぐに次のエラーが発生します。
NoMethodError (undefined method 'jump' for #<Engine1::Member:0x007fe7533b4f10>)
サーバーをリロードする必要があり、ホストアプリで別の変更を行うまで再び正常に動作し、エラーが再びスローされます.なぜこれが起こっているのですか?どうすれば回避できますか?
初期化子の代わりに懸念事項を含めるために、クラスの開始を実行するより良い場所はありますか?