gem(RubyGems)を認証必須のプロキシ経由で使いたい
目的
id:taiyo:20080401#p1 を参照。
結果
~/.gemrc に、以下の設定を記述する(大文字の箇所は記入例、各自で変えること):
http_proxy: http://4000000:[email protected]:8080
※PassWordに英数字以外が含まれる場合はURLエンコードが必要
もちろん、~/.gemrc のパーミッションは 600(自分のみread/wriet可) にしておくこと。
gemの仕様
gemのドキュメントやウェブ上の情報ではみあたらなかったので、ソースを読んでみる。
rubygemsの下のremote_fetcher.rbにて、Gem::RemoteFetcherクラスがウェブアクセスを処理するのだが、プロキシ情報の受け取り方は以下のようになっている。
- 環境変数 http_proxy, http_proxy_user, http_proxy_pass から受け取る
- 環境変数 http_proxy に認証情報付き(http://user:password@host/ 形式)で書いてあれば、認証情報も取得する(URI.parseを使う)
- 設定ファイル(YAML形式)の処理もあり、~/.gemrc 内でHashとして http_proxy を書いておけばよい(認証情報もパースする)
- 設定ファイルからは http_proxy_user, http_proxy_pass は読み取らない