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