ruby中似乎有兩種類型的類型,我不需要它們總是可以訪問的(比如Float,Array,Hash等)。他們是紅寶石的一部分,這是預期的。爲什麼在Rails中應該明確需要一些Ruby常量(類,模塊)?
但也有一些常數,除非明確要求(如REXML,Observable,YAML)不可訪問。它們也是Ruby的一部分,我希望能夠在沒有要求的情況下訪問它們。
爲什麼這些常數不可用沒有要求?
在Rails指南中,不建議明確地要求任何東西,因爲這會弄亂Rails自動加載機制。如果無論如何都需要這些常量,那麼最好的辦法是什麼?
我應該使用要求或require_dependency?
我應該在使用常量的文件頂部使用require還是應該在全局中以某種方式執行?
編輯:另外,由於常量的可用性取決於加載順序,因此很容易忘記需要某個文件,直到加載順序發生某種變化時纔會中斷。除了對使用的每一個常量都額外警惕之外,不要面對這種錯誤的最佳方式是什麼?
好的,這很好,我可以要求他們在頂部。但考慮下一種情況:我在多個文件中使用常量。所以我應該在頂部的每個文件中要求它。但是ruby並沒有強制我這麼做,如果一個文件已經加載了所有在可以使用該常量之後加載的文件。 問題是我可以很容易地忘記需要文件,如果它的工作沒有要求,如果加載順序改變它會打破。 –
@LevDenisov:這引入了加載順序依賴關係。不要這樣做。要麼在引導文件中或在使用它的每個單獨文件中都需要該東西。 –
@LevDenisov:有一次,我花了兩天時間精確地調試了這個:神祕的錯誤,起源於某種情況下加載的東西,而不是加載到另一箇中。 –