代码之家  ›  专栏  ›  技术社区  ›  Luke Chadwick

如何在ruby中处理URL以提取组件部分(scheme、username、password、host等)?

  •  3
  • Luke Chadwick  · 技术社区  · 14 年前

    我正在尝试使用ruby(和Net::SSH)创建一个程序来连接到服务器并执行一些任务。服务器的详细信息如下:

    ssh://user:pass@host:port (for a host that does not yet have SSH keys)
    

    user@host
    

    Net::SSH需要以下格式:

    Net::SSH.start('host', 'user', :password => "password")
    

    是否有gem/stdlib可以将URL处理成这种格式?或者一个简单的正则表达式,可以匹配不同的部分?

    注:我知道并使用卡皮斯特拉诺,但在这种情况下,我需要较低级别的控制。

    2 回复  |  直到 14 年前
        1
  •  11
  •   the Tin Man    14 年前

    两者 URI Addressable::URI 可以解析URL并让您将它们分解为其组件。

    URI包含在Ruby的标准库中,这很好,但是Addressable::URI有更多的特性,当我需要对url做很多工作时,它就是我使用的。

    require 'addressable/uri'
    
    uri = Addressable::URI.parse('ssh://user:pass@www.example.com:81') 
    uri.host # => "www.example.com"
    uri.user # => "user"
    uri.password # => "pass"
    uri.scheme # => "ssh"
    uri.port # => 81
    
    require 'uri'
    uri = URI.parse('ssh://user:pass@www.example.com:81')
    uri.host # => "www.example.com"
    uri.user # => "user"
    uri.password # => "pass"
    uri.scheme # => "ssh"
    uri.port # => 81
    
        2
  •  0
  •   mu is too short    14 年前

    有一个 URI 有帮助的班级。你可能需要替换 ssh 计划 http 不过,我不认为是先用手 URI 了解 宋承宪 开箱即用的方案。

    推荐文章