有没有办法为我计划删除并希望记录其使用情况的应用程序中的方法和/或关联创建自定义弃用通知?我在我的一个模型中有一个关系,我不想继续前进并计划稍后重构代码。我想在每次调用该方法时在我的开发日志中创建一个通知。
在使用某些方法时,我在Ruby / Rails中看到了弃用通知,并且必须有一种简单的方法来执行此操作。
像...一样的东西。
irb(main):001:0> 1.id
(irb):1: warning: Object#id will be deprecated; use Object#object_id
=> 3
答案 0 :(得分:42)
在Rails 3中,您可以使用:"deprecate" method from ActiveSupport:
class Example
def foo
end
deprecate :foo
end
它将为您的方法创建一个别名,并输出一个带有堆栈跟踪的警告。您也可以直接使用此功能的部分内容,例如:
ActiveSupport::Deprecation.warn("Message")
它将输出堆栈跟踪以及消息。
答案 1 :(得分: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
关系中的某些事情。
答案 2 :(得分: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
如果您需要或希望获得更高级的功能,可以使用库或元编程,但总的来说,这并不是一个很好的途径。你应该有一个很好的理由来介绍这种简单的依赖。
答案 3 :(得分:1)