所以,我沒有通過軌道源的一些挖掘和發現提交誰介紹這個功能(SHA:7c95be54)
修復發電機,以幫助曖昧ApplicationController
問題
在發展模式,依賴關係在運行時動態加載, 使用const_missing
。因此,當其中一個常量已經加載且const_missing
未被觸發時,用戶可能以 結束,並出現意外的結果。
鑑於這樣的文件在發動機:
module Blog
class PostsController < ApplicationController
end
end
如果你第一次加載,加載任何應用程序文件之前,它會 正確加載Blog::ApplicationController
,因爲第二行 打const_missing
。但是,如果您加載ApplicationController
第一, 不斷將已加載,const_missing
鉤不會被解僱 及成果PostsController
將從 ApplicationController
而不是Blog::ApplicationController
繼承。
由於無法在AS::Dependencies
中修復,所以最簡單的修復方法是隻需明確加載應用程序控制器即可 。
所以,正如人們所猜測的,這歸結爲一個自動加載問題!所以記住孩子們,在處理可能含糊不清的代碼時,總要明確你輸入的內容。 真正令人不安的是,由引擎引入的命名空間並不會提供太多的隔離,想象你在引擎中引用了一些其他的非rails類,並且包含主應用程序碰巧有一個同名的常量,同樣的問題將適用。