2011-07-12 45 views
3

我完全相信術語,對軌道世界還是比較新的,所以請原諒,如果我對猴子補丁太遠了,那可能會在這種情況下不適用。猴子(也許?)在我的Rails應用程序中修補寶石

我正在使用延長縮短網址的gem LongURL。默認情況下,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 

它似乎不是這樣一個小小的變化值得一個分叉,有什麼好的,軌道慣用?,方法來做這樣的小改變?

感謝

回答

6

當你重新定義常量,您需要先刪除舊的,然後重新申請新的。您的修補程序可能如下所示:

module LongURL 
    remove_const(:ShortURLMatchRegexp) 
    ShortURLMatchRegexp = /http:\/\/[\/\-_.a-z0-9]+/im 

    # ... (etc) ... 
end 

這應該有助於避免有關重新定義現有常量的警告。

至於使Railsy,把它放到config/initializers,並確保它明確標記,也許longurl_monkeypatch.rb所以不會有混淆什麼樣的hackery正在發生。