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のものも直しました。