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コマンドのフックってできないのかな?