-1

我想以这种方式使用 URI:

require 'open-uri'
uri = URI.parse('http://subdomain.domain.com/section/page.html')
puts uri.first_level_domain # => 'domain.com'

我怎样才能做到这一点?

我正在努力:

module URI
    def parse
        ret = super
        domain = ret.host.split('.').last(2).join('.')
        ret.send(:define_method, :first_level_domain, lambda { domain })        
        ret
    end
end

但我明白了undefined method 'first_level_domain' for #<URI::HTTP:0x9bc7ab0> (NoMethodError)

4

1 回答 1

3

为什么事情这么复杂?你可以这样

module URI
  def first_level_domain
    host.split('.').last(2).join('.')
  end
end

uri = URI.parse('http://subdomain.domain.com/section/page.html')
uri.first_level_domain
# => "domain.com"
于 2013-07-20T04:22:18.297 回答