【发布时间】:2018-06-22 13:03:03
【问题描述】:
我有一个 ruby 类,其中包含许多将不再使用的逻辑,但我需要保留(至少一段时间)以实现向后兼容性。
我的计划是将这些方法移动到像LegacyStuff 这样的模块中,并将其包含在类中。我想知道是否有一种巧妙的方法来添加一些东西,这样当调用模块中的任何方法时,都会生成一个警告,而不必将warn 语句实际添加到每个单独的方法体中。
我想我正在寻找的是整个模块上的“调用前”或“调用后”挂钩之类的行为。我想这里的子问题是“这是个好主意吗?”
【问题讨论】:
-
“这是一个好主意吗?” -- 你有一个这么大的模块,以至于你甚至想到了这个问题,这才是真正的问题 IMO!至少你现在正在改变它的工作方式......
-
你可以用一些
method_added魔法来做到这一点。 -
你可以(大量)调整我对另一个问题stackoverflow.com/a/50908899/681520 的回答来做到这一点,至少我认为它应该给你一些提示。
-
@Beejamin “我写 ruby 已经 10 年了,从来没有使用过 method_added”——我也是。除非你是重度 MP,否则你根本不需要它。 :)
-
@engineersmnky 使用
Module#prepend可以更轻松地执行此类操作。我故意写了代码没有Module#prepend作为挑战的关键部分:)
标签: ruby