geminaboxでローカルにgemをホストする
geminaboxを使ってローカルにgemをホストしてみる。
(とりあえずでやってみただけなので、手順等にミスがあるかも)
まずはサーバを立てる
rvmとpowが入っている前提で。 ~/var/geminabox 以下を使うとする。
$ rvm use 1.8.7@geminabox --create $ gem install geminabox $ mkdir -p ~/var/geminabox/data $ echo "rvm use 1.8.7@geminabox" > ~/var/geminabox/.rvmrc $ echo 'require "rubygems" require "geminabox" Geminabox.data = "#{ENV['HOME']}/var/geminabox/data" run Geminabox ' > ~/var/geminabox/config.ru $ ln -s $HOME/var/geminabox $HOME/.pow
これで http://geminabox.dev/ にアクセスすればgeminaboxでホストしているgem一覧が表示される。
つぎにgemを追加する
たとえばhello-0.0.1.gemをrubygems.orgから落としてきて追加する。
$ wget http://rubygems.org/downloads/hello-0.0.1.gem $ gem inabox hello-0.0.1.gem
これをやると http://geminabox.dev/ の一覧に追加される。
使ってみる
$ gem sources -a http://geminabox.dev/
もしくは~/.gemrcのsourcesに手動で追加する。
:sources: - http://geminabox.dev - http://rubygems.org
bundlerだったらGemfileに追記する。
source "http://geminabox.dev" source :rubygems
では実際にインストールしてみる。
$ gem install hello Successfully installed hello-0.0.1 1 gem installed
できた!
最後に
powとrvmのペアが最強すぎる。サーバをいちいち立ち上げる必要もないし、geminaboxの依存するgemと開発用のgemとが混在することもない。
あとはrubygems.orgから一度落としたやつをgeminaboxにコピーすることができたら完璧だ。 gemコマンドのフックってできないのかな?