就目前而言,您无法/app
通过简单地在父应用程序的/app
目录中添加相同的类来重新打开引擎目录中包含的引擎类。例如:
/my_engine/app/controllers/users_controller.rb
/my_app/app/controllers/users_controller.rb
my_engine
如果父应用程序中存在同名文件,则文件 from甚至不会加载。更多细节在这里:
我正在寻找一种解决方法,它允许我将相同的文件名/类放在与父应用程序相同的路径中,然后重新打开而不是覆盖该类。也许我错过了一些明显的东西。我可以使用使用 class_eval 的单独文件(不同的文件名)来完成这项工作,但我对该解决方案并不满意。关于这个优雅的解决方案的任何想法?
我也想知道这个限制背后是否有原因,或者它只是rails加载文件的结果(参见包含的链接)而不是故意的。在我看来,改变引擎的负载行为以允许以这种方式重新打开类将是 rails 中的一个很好的特性。我知道一开始我很困惑,我相信其他开发人员也会遇到这个问题。