きりかノート 3冊め

おあそびプログラミング

自分インストールの ruby でバイナリパッケージの RubyCocoa を使う

rubycocoa-talk で


バイナリパッケージをインストールしたんだけど、% ruby fontnames.rb で
"no such file to load" て言われるよ

との質問。ruby のバージョンが 1.8.4 て書いてあるので、自分でインストールした ruby だなということがすぐにわかった。情報あるといいよな。

原因は、次のとおり。RubyCocoa のバイナリパッケージでは、ライブラリおよび拡張ライブラリはシステム標準の /usr/bin/ruby に合わせてインストール場所が設定してある。だけど、自分で最新の ruby をインストールしていたりすると、ライブラリの場所が異なる( /usr/local/lib/ruby など)ために、コマンドラインruby からは 'osx/cocoa' の require が失敗するが、アプリケーションは動く、という状態になってしまう。

ソースからビルド してもらうのがいちばん簡単な解決策なのだけど、今回は新しい方法を考えた。

  • ライブラリ類を自分の ruby のライブラリインストール先にコピーする

というもの。 libruby のバージョンが異なるからダメだろうなと思っていたのだけど、試してみたら問題なかったからまあいいやという感じで。

 % sudo cp -R /usr/lib/ruby/site_ruby/1.8/osx \
`ruby -r rbconfig -e "p Config::CONFIG['sitedir']"`
% sudo cp /usr/lib/ruby/site_ruby/1.8/powerpc-darwin8.0/rubycocoa.bundle \
`ruby -r rbconfig -e "p Config::CONFIG['sitearchdir']"`

でも、こんなことをせずに DarwinPorts あたりのパッケージ管理システムにおまかせしてしまうのが、いちばんのオススメ。 RubyCocoa は rb-cocoa という名前で登録されてる。