我百分之百确定这个术语,对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这样就不会混淆什么样的黑客行为。

08-05 00:44