繁体   English   中英

Monkey(也许?)在我的 Rails 应用程序中修补 Gem

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM