簡體   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