三度llenvを作ってみた!今度はrubyだよ!
常にマイブームなllenv
シリーズの第 3 弾です。
今回は過去のやつとはコンセプトが違ってます。bundler
の様に常にllenv exec hogehoge
で使うことを想定しています。その分中身は相当すっきりしました。で、調子に乗って rubygems で公開しちゃいました。
概要的な
declare というのを外部で定義できるようにしてるので、正直 LL とかどうでもよくて、shell スクリプトでインストールの部分と実行の部分を書けるものならなんでもいけるような気はします。とりあえず、以下の 4 つは gem の中にぶち込んで有ります。
- node-0.9.3
- perl-5.16.2
- python-2.7.3
- ruby-1.9.3-p327
使い方は簡単。
$ cd your-project
$ echo ruby-1.9.3-p327 > .llenv
まずこんな感じでプロジェクトのトップに.llenv
というファイルを置いて、そこに declare の名前である LL のバージョンを書いておきます。あとは
$ llenv install
$ llenv exec rackup
とかするだけで、あら不思議、rvm とか rbenv とか自分のとこで頑張って設置しなくても勝手に ruby のインストールから bundle install までやってくれます、多分。LL のインストール先は~/.llenv
で、モジュールはプロジェクトの中に作られます(python だけは virtualenv の中に作られます)。初回は当然時間かかりますが、あとは同じ LL のバージョン使うプロジェクトだったら LL のインストールは省略されるのでチョッパヤだと思います。
ちなみに簡単にできた理由は、どの言語もインストーラとローカルパッケージ管理の仕組みが非常によくできてるからで、あまり頭は使わずにありがたくそのまま使わせていただきました。何やってるかは github の delrare の中を見てもらえれば一目瞭然かと思います。shell スクリプトが下手くそなのはご愛嬌。
あと、この先オプションとか綺麗にしていくのは誰かに期待したいところ。僕はこれを使って Heroku っぽいものでも作ろうかなと思ってるのでそっちが先かなぁ〜。
gem 作り
超絶簡単でした。
$ bundle gem ruby-llenv
これでスケルトンできるので、あとは作って、gemspec 書いて、
$ bundle build
$ bundle install
で確認して
$ bundle release
で終わり。github に勝手にタグ切ってくれました。
まとめ
ちなみに、中身はforeman
のコードを大いに参考にさせてもらいました。
もちろん、テストとか一切ないです!怖い!ではまた~