クライアントのレガシーアプリケーションを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
しかし、それは動作しませんでした(当然?)。私はラムダが毎晩NativeClass
が呼び出されるたびに怠惰になると考えていますが、ラムダについての私の理解はやや浅いので、ここで誤解されるかもしれません。
クラス全体を非難する方法や、タッチされたときに警告メッセージをログに送信する手掛かりはありますか?
他の「ベストプラクティス」や廃止されたソリューションについては歓迎しますが、それがSOの有効な質問であるかどうかはわかりません(このトピックではこのトピックが閉鎖されるリスクはありません)。
実は、私はちょうど今のクラス名を廃止したい、(まだ)すべてのメソッドを廃止する必要はありません。だから私はまだすべてのメソッドを同じままにしたい、私はちょうどメソッドが非推奨のクラス名を使用して呼び出されたときに警告が欲しい。他のすべてのメソッドに挿入する新しい 'deprecate'メソッドを使うこともできましたが、もっと簡単な解決法が望まれていました。 – JeanMertz