rails 5.2 中的模块不显示弃用警告,但适用于 class

DEPRECATION WARNING does not show for module in rails 5.2 but works with class

在我回答这个 this 问题时发现

Rails 4.1.8 Ruby 2.2.0p0

module Fred
  extend self
  def aaa; end
  def bbb; end
  def ccc; end
  def ddd; end
  def eee; end
end

module Bar
  extend self
  def ccc; end
end

ActiveSupport::Deprecation.deprecate_methods(
  Fred, :aaa, bbb: :zzz, ccc: 'use Bar#ccc instead'
)

Fred.aaa

DEPRECATION WARNING: aaa is deprecated and will be removed
  from Rails 4.2. (called from \__pry__ at (pry):15)
#=> nil

在 rails 5.2.0 中尝试了相同的代码,但没有弃用警告。

所以我在这里缺少什么,DEPRECATION WARNING 对 rails 5.2.0 有新的更新并且不会对模块发出警告?

仅供参考:Rails 是开源的,代码可在此处公开获得:https://github.com/rails/rails


Rails5 正在使用 Module#prepend.

Rails4 正在使用 alias_method_chain.

显然,Module#prepend 不适用于模块函数。你可以这样做:

ActiveSupport::Deprecation.deprecate_methods(
  Fred.singleton_class, :aaa
)

我没有测试代码,但它应该可以工作。另外,我认为这是 Rails5.

中的错误