[英]Monkey (maybe?) Patching a Gem In My Rails Apps
我 100% 确定术语,对于 Rails 世界来说仍然相对较新,所以请原谅,如果我对猴子补丁太远了,这可能不适用于这种情况。
我正在使用一个 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
这应该有助于避免有关重新定义现有 const 的警告。
至于让它成为 Railsy,将它放入config/initializers
并确保它被清楚地标记,也许是longurl_monkeypatch.rb
,这样就不会混淆正在发生什么样的黑客行为。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.