【发布时间】:2011-04-13 21:10:13
【问题描述】:
最初,我发布了 Stack Overflow 问题Ruby on Rails gems... Re-open models(现已删除)。但我认为这个问题太令人困惑了......我会尝试根据我的发现提出不同的问题。
比方说……
- Gem 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 时被解析。
- Gem B 依赖于 gem A(在 gemspec 中指定),需要重新打开 A::M 模型。
- 我检查了“a.rb”是否在“b.rb”之前加载,确实如此。
现在我的问题是,在“b.rb”中,如果我尝试对 M 模型(来自 gem A,还记得吗?)执行 class_eval 以重新打开它并向其添加“B 特定逻辑” ,M类尚未定义...我已将消息放入'm.rb'中,并且我认为在加载'a.rb'和'b.rb'之后很长时间才加载它...
在 gem B 中,ActiveRecord 加载了我的模型 A::M 后如何获得回调?我需要在我的引擎中做些什么吗?或者换句话说,ActiveRecord在A中加载模型后,加载了哪些文件?
【问题讨论】:
标签: ruby-on-rails-3 gem