現在,您只需在父應用程序的/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