猴子補丁(Monkey Patch)是一種程式設計技巧,可以用來在執行時動態的修改(擴充套件)類別或模組,我們可以通過新增 Monkey Patch 來修改並滿足自己需求。
看以下例子,我們可以直接在Array的個類別裡面增加方法。
從輸出結果來看,我們藉由(Monkey Patch)這種技巧,在Array類別上增加了monkey1的個方法,也能正常輸出結果。
在上面的例子裡面我們增加了一個新的方法,那接下來我們直接修改Array類別裡面的方法,在下面的例子裡面,我們改寫 +方法。
再來我們直接呼叫+方法,從輸出結果來看+方法已經被改寫了~~
由以上的例子可以看到我們可以藉由Monkey Patch的方便性來達到擴充和修改的效果,但這樣子的方便性也會帶來麻煩。
1.用Monkey Patch直接改寫ruby上原始類別上的方法(String、Array之類 的),可能會造成預期的效果與原本的不一樣。
2.在團隊協作下,可能會出現新增或修改相同的Monkey Patch,會造成輸出 結果無法預測。
3.修改某個gem上面的方法,這可能直接導致整套系統上的某些功能壞掉。
所以在用的時候要注意,不然bug抓不完~