[英]How to override a method of a ruby gem for certain conditions?
我只是在滿足某些條件時試圖覆蓋gem的一個私有方法。
我想只在滿足某個條件時才使用此方法,否則使用gem的方法。
module Net
class FTP
def makepasv
if condition
@sock.peeraddr[0] == 'AF_INET' ? parse229(sendcmd('EPSV')) : parse227(sendcmd('EPSV'))
else
super
end
end
end
end
你可以prepend
被重寫的類,然后使用條件。 這樣,您的模塊將成為祖先鏈中的最后一個,並且能夠調用super
以使用默認行為
例如
module Override
def to_s(*)
if self == 'a'
"===a==="
else
super
end
end
end
String.prepend(Override)
[9] pry(main)> String.new("a")
=> "a"
[10] pry(main)> String.new("a").to_s
=> "===a==="
[11] pry(main)> String.new("b").to_s
=> "b"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.