使用 ActiveSupport::Deprecation 标记已弃用的方法

发布于 2024-11-07 01:59:39 字数 248 浏览 4 评论 0原文

这个问题中解释了如何做一个简单的警告(但不记录跟踪,所以不是很有用)并且有很多方法可以实现此目的,但我没有找到任何指南。

如何使用 ActiveSupport::Deprecation 将 old_method 标记为已弃用并调用其他 new_method。

In this question is explained what to do to make a simple warning (but do not log trace so is not so useful) and there is a bunch of methods to make this, but I found no guides.

How do I use ActiveSupport::Deprecation to mark a old_method as deprecated and call other new_method.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

还给你自由 2024-11-14 01:59:39

您可能需要查看 lib/active_support/deprecation/method_wrappers.rb 示例。

You may want to look into lib/active_support/deprecation/method_wrappers.rb for an example.

云仙小弟 2024-11-14 01:59:39

正如 Roman 所说,可以通过
ActiveSupport::Deprecation.deprecate_methods(target_module, *deprecated_methods)

其中:

  • target_module 是该方法所属的模块或类。
  • deprecated_methods 是一个符号数组。

在最后一个方法中,可以提供自定义弃用消息的选项。

ActiveSupport::Deprecation.deprecate_methods(target_module, :old_method, \
    :other_old_method => :new_method, :another_old_method => "custom message")

此示例显示调用 old_method 时的默认消息,在第二个示例中添加注释“使用 new_method 代替”,以及带有 :another_old_method 的自定义消息。

注意:不推荐使用的方法应该被定义(之前)并且将被执行。 :new_method 不会自动调用。 (还有更多选择,但我不知道)

As Roman says, it can be done with
ActiveSupport::Deprecation.deprecate_methods(target_module, *deprecated_methods)

where:

  • target_module is the module or class where the method belongs.
  • deprecated_methods is an array of symbols.

In the last methods can be given options to customize the deprecation message.

ActiveSupport::Deprecation.deprecate_methods(target_module, :old_method, \
    :other_old_method => :new_method, :another_old_method => "custom message")

This example shows the default message when old_method is called, give a comment to "use new_method instead", in the second one, and the custom message with :another_old_method.

Notes: The deprecated methods should be defined (before) and will be executed. The :new_method is not called automatically. (there are more options, but I don't know them)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文