微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Ruby on Rails宝石包含和初始化顺序,用于从另一个宝石重新打开在一个宝石中声明的模型

如何解决Ruby on Rails宝石包含和初始化顺序,用于从另一个宝石重新打开在一个宝石中声明的模型

最初,我发布了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中。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。