lib/httparty.rb
module HTTParty
module AllowedFormatsDeprecation
def const_missing(const)
if const.to_s =~ /AllowedFormats$/
Kernel.warn("Deprecated: Use HTTParty::Parser::SupportedFormats")
HTTParty::Parser::SupportedFormats
else
super
end
end
end
extend AllowedFormatsDeprecation
def self.included(base)
base.extend ClassMethods
base.send :include, HTTParty::ModuleInheritableAttributes
base.send(:mattr_inheritable, :default_options)
base.send(:mattr_inheritable, :default_cookies)
base.instance_variable_set("@default_options", {})
base.instance_variable_set("@default_cookies", CookieHash.new)
end
module ClassMethods
extend AllowedFormatsDeprecation
...
我想知道代码extend AllowedFormatsDeprecation
在这两个地方的目的是什么?
我不认为
module ClassMethods
extend AllowedFormatsDeprecation
这里有任何意义。
我希望有一个很好的解释........
答案 0 :(得分:0)
经过对相关技能的深入研究,我明白了这一点。
AllowedFormatsDeprecation
的第一个扩展是处理这种const引用
HTTParty::AllowedFormats
AllowedFormatsDeprecation
的第二个扩展是ClassMethods
方法中的const引用。像
module ClassMethods
def test
AllowedFormats
end
end
模块的include
或extend
不能更改此模块的const引用方式,因此方法const_missing
应在模块中定义。