问题描述
最初,我发布了Stack Overflow问题Ruby on Rails gems ...重新打开模型(现已删除)。但是我认为这个问题太令人困惑了...我将根据发现的问题提出不同的要求。
比方说...
宝石A有一个引擎(lib / a / engine.rb)并声明了一个模型M(基于ActiveRecord,\'app / models / m.rb \')。
在gem A中,有一个入口点(lib / a.rb),在rails加载gem时将对其进行解析。
在gem B中,有一个入口点(lib / b.rb),在rails加载gem时将对其进行解析。
宝石B取决于宝石A(在gemspec中指定),并且需要重新打开A :: M模型。
我已经检查了\'a.rb \'在\'b.rb \'之前是否已加载。
现在我的问题是,当我在\'b.rb \'中时,如果我尝试在M模型上执行class_eval(从gem A,记得吗?)以重新打开它并向其中添加\'B特定逻辑\'它,尚未定义M类...我已经将消息放在\'m.rb \'中,并且我发现它在\'a.rb \'和\'b.rb之后已经加载了很长时间\'已加载...
从gem B中,
ActiveRecord
加载模型A :: M后,如何获得回调?我需要在引擎上做些什么吗?换而言之,ActiveRecord在A中加载模型后会加载什么文件?
解决方法
为了以防万一,请确保同时将宝石A手动加载到宝石B中。