我有一个 Rails 3 应用程序,它定义了一些正常的类。我试图弄清楚如何在插件中重新打开其中一个类(由“rails generate plugin ...”生成),并自动拥有这两个文件(应用程序本身的文件和插件中的文件)在开发模式下重新加载每个请求。
一个简单的例子是:
# root/lib/person.rb
class Person
Core = 1
end
# root/vendor/plugins/plugin1/lib/person.rb
class Person
Plugin = 2
end
# root/app/views/home/index.html.erb
<%= Person::Core %> ... <%= Person::Plugin %>
呈现该视图时,我收到 Bike::Plugin 未初始化的错误。我已将 root/lib 和 root/vendor/plugins/plugin1/lib 添加到我的 autoload_paths 中(理想情况下,插件会将其添加到其 init.rb 或类似的地方,但一次只添加一件事)。
我该怎么做?autoload_at 看起来可能会有所帮助,如果我可以告诉它从两个位置显式地自动加载 Person 类,但我没有运气(不过我对它完全陌生,所以我可能传递了错误的参数等)。最后,我想使用在标准位置(特别是模型)中定义的类来做到这一点,而不仅仅是 lib。