现在,您只需在父应用程序的/app
目录中添加相同的类,就无法重新打开引擎的/app
目录中包含的引擎类。例如:从父应用程序重新打开Rails 3引擎类
/my_engine/app/controllers/users_controller.rb
/my_app/app/controllers/users_controller.rb
从my_engine
的文件不会即使与父应用程序同名的文件中加载。更多细节在这里:
我要寻找一个解决办法,让我放弃了相同的文件名/类的父应用程序相同的路径,并重新打开,而不是覆盖类。也许我错过了一些明显的东西。我可以使用一个单独的文件(不同的文件名)使用class_eval来完成这项工作,但我对这个解决方案并不满意。任何想法在这个优雅的解决方案?
我也想知道是否有这个限制背后的原因,或者它只是导轨如何加载文件(请参阅附录链接)而不是故意的结果。在我看来,改变引擎的加载行为以允许以这种方式重新打开类将是一个很好的轨道功能。我知道它一开始让我困惑,我相信其他开发者也会为这个问题而苦恼。
我发现这一点,有一个补丁:http://stackoverflow.com/q/5045068/378044 – johnmcaliley 2011-03-02 02:10:07