Rails自定义弃用通知

Pet*_*own 24 ruby logging ruby-on-rails deprecated

有没有办法为我计划删除并希望记录其用法的应用程序中的方法和/或关联创建自定义弃用通知?我在我的一个模型中有一个关系,我不想继续前进并计划稍后重构代码.我想在每次调用该方法时在我的开发日志中创建一个通知.

我在使用某些方法时已经看到Ruby/Rails中的弃用通知,并且必须有一个简单的方法来执行此操作.

就像是...

irb(main):001:0> 1.id
(irb):1: warning: Object#id will be deprecated; use Object#object_id
=> 3
Run Code Online (Sandbox Code Playgroud)

Eug*_*kov 42

在Rails 3中,您可以使用ActiveSupport中的"deprecate"方法:

class Example
  def foo
  end

  deprecate :foo
end
Run Code Online (Sandbox Code Playgroud)

它将为您的方法创建一个别名,并输出一个带有堆栈跟踪的警告.您也可以直接使用此功能的一部分,例如:

ActiveSupport::Deprecation.warn("Message")
Run Code Online (Sandbox Code Playgroud)

它将输出堆栈跟踪以及消息.


Ala*_*ody 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
Run Code Online (Sandbox Code Playgroud)

这种关系的某些方面.