RubyのURLを処理してコンポーネントパーツ(スキーム、ユーザー名、パスワード、ホストなど)を抽出するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/4274213

  •  28-09-2019
  •  | 
  •  

質問

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")

この形式にURLを処理できるGEM/STDLIBはありますか?または、さまざまな部分に一致する可能性のある単純な正規表現ですか?

注:Capistranoを知っていて使用していますが、この場合、より低いレベルの制御が必要です。

役に立ちましたか?

解決

両方 uriアドレス可能:: uri URLを解析し、それらをコンポーネントに分解できます。

URIはRubyの標準ライブラリに含まれていますが、これは素晴らしいですが、アドレス指定可能な:: 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

他のヒント

があります uri 役立つはずのクラス。あなたは置き換える必要があるかもしれません ssh でスキーム http しかし、最初に手で、私は考えていません URI を理解しています ssh 箱から出してスキーム。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top