Mac(Leopard) でRjb

RubyのProc周りで面白い記事(http://www.artonx.org/diary/20100402.html#c02)があったので,
書いてあるコードを追ってみようと思いたったのが始まり.

Rubyベストプラクティス -プロフェッショナルによるコードとテクニック

Rubyベストプラクティス -プロフェッショナルによるコードとテクニック

記事内で使われているRjbというライブラリがすんなりインストールできなかったのでメモを残しておきます.

環境

Leopard標準の環境.

状況

  • JAVA_HOMEが無いよ!と出る.
$ sudo gem install rjb

Building native extensions.  This could take a while...
ERROR:  Error installing rjb:
	ERROR: Failed to build gem native extension.

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby extconf.rb
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers.  Check the mkmf.log file for more
details.  You may need configuration options.

Provided configuration options:
	--with-opt-dir
(中略)
extconf.rb:48: JAVA_HOME is not set. (RuntimeError)
(後略)

失敗した対策

ログインしているユーザの環境でJAVA_HOMEを設定してみるも上記と同じ失敗.

$ JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home
$ export JAVA_HOME

対処

どうやら,sudo を使っているのでsudoerの設定に追記が必要だったようです*1

$ sudo visudo
# Defaults specification
....
Defaults    env_keep += "JAVA_HOME" # 追記. 25行目あたり

としておき,su でrootユーザに切り替えてからJAVA_HOMEを設定,Rjbのインストールします.

$ sudo su -
# JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home
# export JAVA_HOME
# gem install rjb -y

これでRubyからJavaのクラスを使える!

*1:viで行コピーと編集が出来る必要あり.