三度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のコードを大いに参考にさせてもらいました。

もちろん、テストとか一切ないです!怖い!ではまた~