RubyGemsのミラーの構築

最近RubyForgeがたまに落ちてて仕事にならないことが何度かあったので、ローカルにRubyGemsのミラーサーバーをセットアップしました。
gemの中にgem_mirrorというコマンドがあるんですが、たぶんrsyncの方が効率がいいのでrsyncでミラーしています。

1. 以下のコマンドをCronで定期的に実行するように設定します。サーバーに負荷をかけないよう、4時間毎に実行しています。

rsync -av --delete rsync://rubyforge.rubyuser.de/gems/ /path/to/mirror_root/gems && wget http://gems.rubyforge.org/yaml -O /path/to/mirror_root/yaml

2. Webサーバーに/path/to/mirror_rootをドキュメントルートにしたバーチャルホストを作成します。

設定ファイルの例:

<VirtualHost *:80>
    ServerName gems.mirror
    DocumentRoot /path/to/mirror_root

    <Directory /path/to/mirror_root>
       Options Indexes
       Order allow,deny
       Allow from all
    </Directory>
</VirtualHost>

3. .gemrcを作成します。

$HOME/.gemrcの例

gem: --source http://gems.mirror/

以上で設定完了です。