'Httparty'源代码的含义是什么?

时间:2014-08-17 15:37:06

标签: ruby-on-rails httparty

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

这里有任何意义。

我希望有一个很好的解释........

1 个答案:

答案 0 :(得分:0)

经过对相关技能的深入研究,我明白了这一点。 AllowedFormatsDeprecation的第一个扩展是处理这种const引用

HTTParty::AllowedFormats

AllowedFormatsDeprecation的第二个扩展是ClassMethods方法中的const引用。像

module ClassMethods
  def test
    AllowedFormats
  end
end

模块的includeextend不能更改此模块的const引用方式,因此方法const_missing应在模块中定义。