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.
中的错误
在我回答这个 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.
中的错误