24

削除する予定のアプリケーション内のメソッドおよび/または関連付けに対してカスタムの非推奨通知を作成し、それらの使用状況をログに記録する方法はありますか? モデルの 1 つに、今後は使用したくない関係があり、後でコードをリファクタリングする予定です。そのメソッドが呼び出されるたびに、開発ログに通知を作成したいと思います。

特定のメソッドを使用している場合、Ruby/Rails で非推奨の通知を見たことがありますが、これを行う簡単な方法が必要であると考えています。

何かのようなもの...

irb(main):001:0> 1.id
(irb):1: warning: Object#id will be deprecated; use Object#object_id
=> 3
4

4 に答える 4

42

Rails 3 では、ActiveSupport の : "deprecate" メソッドを使用できます。

class Example
  def foo
  end

  deprecate :foo
end

メソッドのエイリアスを作成し、スタック トレースで警告を出力します。この機能の一部を直接使用することもできます。

ActiveSupport::Deprecation.warn("Message")

メッセージとともにスタックトレースを出力します。

于 2011-08-18T18:24:53.063 に答える
6

多分:

def old_relationship
  warn "[DEPRECATION] old_relationship is deprecated."
  @old_relationship
end

def old_relationship=(object)
  warn "[DEPRECATION] old_relationship is deprecated."
  @old_relationship = object
end

関係のためのそれらの線に沿った何か。

于 2010-02-17T20:48:54.373 に答える
2

ほとんどの場合、警告を発して新しいメソッドを呼び出すだけで済みます。

class Example
  # <b>DEPRECATED:</b> Please use <tt>good_method</tt> instead.
  def bad_method
    warn "`bad_method` is deprecated. Use `good_method` instead."
    good_method
  end

  def good_method
    # ...
  end
end

必要に応じてライブラリやメタプログラミングがあります。この単純なものに依存関係を導入するには、かなりの理由があるはずです。

于 2010-02-17T20:47:25.257 に答える
1

私の2セントを追加:

rdocの代わりにYardを使用している場合、doc コメントは次のようになります。

# @deprecated Please use {#useful} instead

最後に、tomdocに準拠している場合は、コメントを次のようにします。

# Deprecated: Please use `useful` instead

非推奨: メソッドが非推奨であり、将来のバージョンで削除されることを示します。これを使用して、Public であったが次のメジャー バージョンで削除されるメソッドを文書化する必要があります。

于 2017-02-23T10:42:26.640 に答える