2010-05-04 40 views
9

我試圖重新打開在軌String類,並添加了一堆更多的方法對我的應用程序使用。編寫代碼不是問題 - 我的問題是關於代碼應該放在哪裏。凡重新打開類回報率

它沒有意義的,我重新打開一個不同的模型文件中的一類,因爲它真的沒有任何做任何特別的車型。我認爲configlib可能在某個地方合理,但我對RoR還不是特別精通。

總之,在這裏是定義類修改代碼的最合乎邏輯的地方,以及是否有不同的地方/加載代碼時任何影響?

回答

18

最合理的地方大概是在config/initializers目錄中的文件。您在此放入的任何*.rb文件將在導軌啓動時自動執行。如果你願意,你可以把它們放在一個子文件夾中,這樣你就可以做類似config/initializers/extensions/*.rb的事情。

7

我試着把這些猴子補丁保持在最低限度,只有當他們非常清楚地符合我的代碼的最大利益時。

最近我更喜歡將文件保存在諸如lib/monkey/string.rb,lib/monkey/hash.rb等文件夾中。然後我需要在我的環境中的lib/monkey文件夾中的所有文件。 rb文件。

# Load all monkey-patches. 
Dir["lib/monkey/*.rb"].each {|monkeyfile| require monkeyfile} 

這可以讓我的所有類修改代碼隔離到一個位置,如果出現問題。我也喜歡這個有點愚蠢的命名,因爲它使它成爲了需要注意的事情。有人可能會有一個更好的系統,如果是這樣的話...我很想聽聽它!

+2

你爲什麼不使用initializers目錄?它在這裏做你正在做的事情。 – ryeguy 2010-05-04 14:39:01

+0

我將不得不考慮使用初始值設定項,但我覺得做一些與修改初始值設定項路徑中的默認類一樣大的東西時有點不對。 – Alex 2010-05-04 14:47:49

+1

有什麼區別?你必須把你的代碼放到一個環境文件中,然後在框架啓動時運行它。這裏的問題是你是否想要使用內置於Rails的東西,或者你是否想要自己實現完全相同的東西。如果需要,您仍然可以創建一個名爲「猴子」初始化程序的目錄。沒有必要重新發明輪子。 – ryeguy 2010-05-04 14:57:54