安全猴修補精煉
從 Ruby 2.0 開始,Ruby 允許通過改進提供更安全的 Monkey Patching。基本上它允許限制 Monkey Patched 程式碼僅在請求時應用。
首先,我們在模組中建立一個細化:
module RefiningString
refine String do
def reverse
"Hell riders"
end
end
end
然後我們可以決定在哪裡使用它:
class AClassWithoutMP
def initialize(str)
@str = str
end
def reverse
@str.reverse
end
end
class AClassWithMP
using RefiningString
def initialize(str)
@str = str
end
def reverse
str.reverse
end
end
AClassWithoutMP.new("hello".reverse # => "olle"
AClassWithMP.new("hello").reverse # "Hell riders"