rcmdnk's blog

Gem Art ( ジェムアート ) ステンレススチール キュービックジルコニア 6mm クラウン (王冠 ) デザイン シングル ピアス クリア

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

Sponsored Links
Sponsored Links

« MacのMenuBarGmailがメールをアップデートしなくなるバグをフィックス Homebrew-Caskの仕様が変わったので自作Caskの変更が必要だった »

}