From: "NARUSE, Yui" Date: 2011-08-10T17:20:32+09:00 Subject: [ruby-dev:44372] Re: [Ruby 1.9 - Feature #5180] net/http の接続時に用いる IP アドレスの指定 2011年8月10日15:20 Tanaka Akira : > 2011年8月10日15:05 Yui NARUSE : > >> 別のユースケースとして、同じホスト名(というかドメイン名)を持つ複数のサーバ群に対して、 >> それぞれに動作確認で通信したい事があったんですが、この場合だと一定のホスト名を送りつつ 、 >> IP アドレスは網羅しないといけないので、/etc/hosts だとサーバーの数だけ書き換えて試すのを >> 繰り返さないといけないのでつらいです。 > > resolv-replace みたいに TCPSocket.open をすりかえるのはいかがですかね。 > > # これは lexcal じゃなくて dynamic に変えたい例だなぁ (つまり local rebinding) TCPSocket.open の中などでやるという方向自体はありだと思っているんですが、 ではそこで使う IPアドレスをどこから取ってくるかとなると、 グローバル変数を使うとかしないと上手くいかないんじゃないかと この提案だとこんな感じになります。 もうちょっと使いづらくてもいいとは思いますが、そうすると start が使えなくなって 一気に複雑化するのが悩みどころ require 'net/http' addrs = %w/192.168.0.1 192.168.0.2 192.168.0.3/ addrs.each do |addr| Net::HTTP.start('example.org', use_ssl: true, ipaddr: addr){|h| p h.get('/')} end -- NARUSE, Yui