Ruby uri模块解析产生nil
Ruby uri module parsing produces nil
我的 ruby 文件正在使用 Ruby uri
模块:
require 'uri'
def parse_uri(uri) # uri => www.google.com
uriParsed = URI(uri) # uriParsed => <URI::Generic 0x000000000 URL:www.google.com>
uriHost = uriParsed.host # uriHost => nil
documentation 中所述的预期行为应该为 uriHost
产生 google.com
。然而,事实并非如此;我已经尝试重新启动我的 Rails 服务器,运行 bundle install
,并要求 uri/http
但无济于事。有什么想法吗?
Ruby版本为2.1.4,rails版本为4.0.1
您需要指定协议:
parse_uri('http://www.google.com')
您忘记在 URI
上给 .path
打电话:
require 'uri'
def parse_uri(uri) # uri => www.google.com
uriParsed = URI.parse(uri) # uriParsed => <URI::Generic 0x000000000 URL:www.google.com>
uriHost = uriParsed.path# uriHost => nil
或.
def parse_uri(uri) # uri => www.google.com
uriParsed = URI.parse(uri).path
实际上 URI(uri)
returns 与用 .parse
调用它是同一个对象,所以它看起来有点多余。这是您使用 .path
而不是 .host
:
的原始方法
def parse_uri(uri) # uri => www.google.com
uriParsed = URI(uri) # uriParsed => <URI::Generic 0x000000000 URL:www.google.com>
uriHost = uriParsed.path# uriHost => nil
最后,如果在 url 中包含 www.
前缀,而您想省略它,您可以这样做:
require 'uri'
def parse_uri(uri) # uri => www.google.com
uriParsed = URI(uri) # uriParsed => <URI::Generic 0x000000000 URL:www.google.com>
uriHost = uriParsed.path# uriHost => nil
uriHost.start_with?('www.') ? uriHost[4..-1] : uriHost
end
我的 ruby 文件正在使用 Ruby uri
模块:
require 'uri'
def parse_uri(uri) # uri => www.google.com
uriParsed = URI(uri) # uriParsed => <URI::Generic 0x000000000 URL:www.google.com>
uriHost = uriParsed.host # uriHost => nil
documentation 中所述的预期行为应该为 uriHost
产生 google.com
。然而,事实并非如此;我已经尝试重新启动我的 Rails 服务器,运行 bundle install
,并要求 uri/http
但无济于事。有什么想法吗?
Ruby版本为2.1.4,rails版本为4.0.1
您需要指定协议:
parse_uri('http://www.google.com')
您忘记在 URI
上给 .path
打电话:
require 'uri'
def parse_uri(uri) # uri => www.google.com
uriParsed = URI.parse(uri) # uriParsed => <URI::Generic 0x000000000 URL:www.google.com>
uriHost = uriParsed.path# uriHost => nil
或.
def parse_uri(uri) # uri => www.google.com
uriParsed = URI.parse(uri).path
实际上 URI(uri)
returns 与用 .parse
调用它是同一个对象,所以它看起来有点多余。这是您使用 .path
而不是 .host
:
def parse_uri(uri) # uri => www.google.com
uriParsed = URI(uri) # uriParsed => <URI::Generic 0x000000000 URL:www.google.com>
uriHost = uriParsed.path# uriHost => nil
最后,如果在 url 中包含 www.
前缀,而您想省略它,您可以这样做:
require 'uri'
def parse_uri(uri) # uri => www.google.com
uriParsed = URI(uri) # uriParsed => <URI::Generic 0x000000000 URL:www.google.com>
uriHost = uriParsed.path# uriHost => nil
uriHost.start_with?('www.') ? uriHost[4..-1] : uriHost
end