Tag: classloader

当加载根命名空间中的另一个同名类时,Rails类加载会跳过命名空间类

我有两个名称空间,每个名称空间都有自己的控制器和演示者类: Member::DocumentsController Member::DocumentPresenter Guest::DocumentsController Guest::DocumentPresenter 两位演示者都inheritance自::DocumentPresenter 。 控制器在没有指定名称空间的情况下访问各自的演示者,例如: class Guest::DocumentsController < ActionController::Base def show DocumentPresenter.new(find_document) end end 这通常会在同一名称空间内调用presenter。 但有时在开发环境中我看到base :: DocumentPresenter正在使用中。 我怀疑原因是base :: DocumentPresenter已经加载了,所以Rails类自动加载并不需要进一步查看。 这可能是这种情况吗? 它也可以在生产环境中发生吗? 我可以想到两个解决方案: 将基类重命名为DocumentPresenterBase 在控制器文件中明确要求适当的presenter文件 有更好的解决方案吗?