proxy 環境下の gem でリモートとローカルのリポジトリを一緒に使う

そんな環境の人、あまりいないかもしれないけど。

# .gemrc
:sources:
- http://gems.rubyforge.org
- http://gems.github.com
- http://gems.internal.local

こういう特定の環境だと、大体は環境変数 HTTP_PROXY および NO_PROXY を定義して自動で proxy 通るようにしてると思うんだけど、gem が内部で使ってる Net::HTTP は NO_PROXY を自動で解釈してよしなに、というのはやってくれないみたい。

ちょっと探したら http_configuration という gem パッケージがあって、これは RDoc を見たところ Net::HTTP を拡張して no_proxy などを指定することができるようだったので、gem 内でもこれ使うようにパッチ書いてみたら、とりあえず動いてる模様。

パッチはこちら。RubyGems with HTTP_PROXY/NO_PROXY · GitHub