我对这个术语100%肯定,对于rails世界来说仍然相对较新,所以请原谅,如果我与猴子补丁相距太远,那么在这种情况下可能不适用。
我正在使用一个延长缩短网址的宝石LongURL。默认情况下,gem使用longurl.org,但我们每天推送几十万个网址,并认为每个人都可以在内部提供该服务。我只需要更改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
看起来似乎没有这么小的改变值得分叉,什么是好的,轨道惯用的?,做这样的小改动的方法?
由于
答案 0 :(得分:6)
当您重新定义常量时,您需要先删除旧的常量,然后重新应用新的常量。您的补丁可能如下所示:
module LongURL
remove_const(:ShortURLMatchRegexp)
ShortURLMatchRegexp = /http:\/\/[\/\-_.a-z0-9]+/im
# ... (etc) ...
end
这应该有助于避免重新定义现有const的警告。
就Railsy而言,将其放入config/initializers
并确保其标记清楚,或许longurl_monkeypatch.rb
所以对于什么样的hackery没有混淆。