我正在爲客戶端從Rails 2.x重寫/重構遺留應用程序到3.x.作爲重構的一部分,我也想從本地語言中的模型/方法轉向純英文代碼庫。在Rails中棄用整個模型
這涉及爲幾乎所有功能編寫新方法。我解決這個問題的方法做:
def english_method
# ...
end
def native_method
warn 'DEPRECATED, please use #english_method'
english_method
end
這工作正常方法,並幫助我跟蹤其中仍在使用老方法的地方,而不會破壞任何代碼。
對於類(模型),但是,我一直在做:
class NativeClass < EnglishClass
# DEPRECATED, Please use EnglishClass
end
class EnglishClass
# ...
end
這個「作品」,每當NativeClass
被調用,應用程序繼續工作,但我不日誌中得到任何消息通知我一部分仍在撥打NativeClass
的應用程序。
如何確保NativeClass
的每個「觸摸」實際上都會導致寫入日誌錯誤?
我試過(無故不是想着「也許這個作品」等)做:
class NativeClass < EnglishClass
-> { ActiveSupport::Deprecation.warn 'Native model is deprecated in favor of English' }
end
但是(明顯?)沒有工作。我認爲lambda會在每次調用NativeClass
時被加載,但是我對lambda的理解仍然很淺,所以我可能會在這裏弄錯。
任何關於如何棄用整個類的線索,並在觸摸時向我的日誌發送警告消息?
其他「最佳實踐」和/或解決方案的棄用是受歡迎的,但我不確定這是否是一個有效的問題(因此我不想冒這個問題的風險)。
其實,我不想棄用的所有方法(只是還沒有),我只是想,現在不建議使用類名。所以我仍然希望所有的方法保持不變,我只是希望在使用不推薦使用的類名稱調用方法時發出警告。我可能會使用其他所有方法插入的新的「棄用」方法,但我希望能找到更簡單的解決方案。 – JeanMertz