Homebrewの拡張で brew-gem というRubyGemsをHomebrewで取り扱う物がありますが、 Issue が建てられたのでこれを Brew-file でもきちんと取り扱える様にしました。
brew-gem
Homebrewで
$ brew install brew-gem
としてインストールしてあげると、gemというサブコマンドがbrewで使えるようになります。
これを使って
$ brew gem install heroku
とかすると、Herokuがインストールできます。
この際、実態は/usr/local/Cellar/以下に置かれて、 実行ファイルなどは/usr/local/bin/herokuへシンボリックリンクが置かれていたりします。
普通にMacでgem install herokuとすると、
/usr/local/gems/bin/herokuにコマンドがインストールされるので
ちょっと使い勝手は変わります。
また、brew gemでインストールしたものは、通常の
gem listのリストには入りません。
なので全く別管理になります。
このbrew-gemですが、元々、herokuとかをインストールすると、
パッケージ名としてherokuという物がbrew listに表示される様になっていました。
ですが、gemの中にはgit等、Homebrewで既に使われているパッケージ名を持つものが
あるので、これらをインストールしようとすると問題が起きます。
また、名前を見ただけではbrew gemでインストールされたのか普通の
パッケージなのか分からず、
さらに上の様に名前が衝突するような場合はbrew listからは判断のしようがありません。
そこで、ちょっとPull requestを送って、
brew gemでインストールしたものに関してはgem-という文字を付けて貰うようにしました。
なので今行うとgem-herokuというパッケージがbrew listに表示されるはずです。
これで衝突も無くなるし一目でbrew gemで管理してるものだと分かるので
管理もしやすくなりました。
Brew-fileでの管理
これらのgemパッケージをインストールしてある場合、
brew file initしてあげると、Brewfileの中に
gem heroku
といった行が出る様になります。
自分でBrewfileを直接書く場合でもgem + gemの名前を
Brewfileに書いておくと、
brew file install時に、
brew gem installを使ってインストールします。
この際、brew-gemがインストールされて無ければ自動でインストールする様にも
しました。
ついでに、Homebrewにはこれ以外にも
brew-pip
というpipのパッケージ管理をHomebrewで行う拡張もあり、
こちらの管理も上のgemと同じような感じで
Brew-file内で出来る様になっています。
また、Brew-fileにはbrewコマンドをラップして
通常のbrew install等を行った時に
自動でBrewfileをアップデートできる様にするbrew-wrapという
機能を入れてありますが、
これらのbrew gem installなどした場合にも
Brewfileが自動でアップデートされうようにしました。
最近brew-pipを余り使ってなくて、実はpipの方がこれまでちゃんと 自動更新されてない状況になってましたが、 今回それも直したのでちゃんとbrew-pipのものも直しました。


