Ruby | RubyKaigi2014の知見。geminabox gem で Private な Gem Server を構築 #rubykaigi
概要
geminabox は RubyKaigi2014の初日(2014/09/18)に Takumi Miura さんが
「"Gem of this Week" - building culture and making gem」
という講演の中で紹介していた gem です。
geminabox は private な gem Server を作成するための gem です。
RubyGems に公開するようなたぐいではない gem とかありますよね。
業務特有のビジネスロジックを含み、公開出来ないようなものなど。
- RubyKaigi 2014 1日目まとめ #rubykaigi
- "Gem of this Week" - building culture and making gem スライド
- Gem in a Box GitHub
- Gem in a Box RubyGems
前提
動作確認環境は以下。
OS: Ubuntu1404.LTS
Ruby: 1.9.3系
GitHub の geminabox のREADMEの説明によると Ruby 2系には対応していない模様。
ただ、Travis CIの結果を見ると 2.0 でテストが成功しているので現在は問題ないのだろうか?
README.md を信じて 1.9 系でインストールしました。
(2014/09/25現在)
インストール
Web Server は unicorn である必要はありません。
$ gem i unicorn --no-ri --no-doc
$ gem i geminabox --no-ri --no-doc
設定手順
- config.ru を作成
# 任意の名前のディレクトリを作成
$ mkdir rubygems
$ sudo mkdir /var/geminabox-data
$ cat <<EOS > config.ru
require "rubygems"
require "geminabox"
Geminabox.data = "/var/geminabox-data"
run Geminabox::Server
EOS
※ Geminabox.data のフォルダは書き込み権限を設定しておくこと
- 起動スクリプトを Rakefile で作成
task :start do
system("unicorn -p 2000 -D")
end
task :stop do
pids = `ps -ef | grep 'unicorn master' | awk -F ' ' '{print $2}'`
pid = pids.each_line.map(&:chomp).first
if $?.exitstatus == 0
system("kill -QUIT #{pid}")
else
puts "Not Running Unicorn Process"
end
end
task :restart => [:stop, :start] do
end
- ブラウザから確認
$ rake start
- 停止
$ rake stop