我百分之百确定这个术语,对rails世界来说还是比较新的,所以请原谅,如果我对monkey补丁太不熟悉,在这种情况下可能不适用。
我正在使用一个gem,longurl,它可以延长缩短的url。默认情况下,gem使用longurl.org,但我们每天推送几十万个url,并认为让每个人都在内部提供该服务会更好。我只需要改变2个常量来指向我自己的url。
module LongURL
ShortURLMatchRegexp = /http:\/\/[\/\-_.a-z0-9]+/im
# Urls for longurl
EndPoint = URI.parse("http://api.longurl.org/v1/expand")
ServiceEndPoint = URI.parse("http://api.longurl.org/v1/services")
end
看起来这样一个小小的改变配不上一个叉子,有什么好的,rails惯用的?,进行这样的小更改的方法?
谢谢
最佳答案
重新定义常量时,需要先删除旧的常量,然后重新应用新的常量。你的补丁可能是这样的:
module LongURL
remove_const(:ShortURLMatchRegexp)
ShortURLMatchRegexp = /http:\/\/[\/\-_.a-z0-9]+/im
# ... (etc) ...
end
这将有助于避免有关重新定义现有常量的警告。
至于让它变得有讽刺意味,把它放进
config/initializers
并确保它有清晰的标签,也许longurl_monkeypatch.rb
这样就不会混淆什么样的黑客行为。