Home‎ > ‎ProgramTool‎ > ‎Ruby‎ > ‎

Rjb

090320_22_19

Apache の POI をRubyから使いたいなと思って、入れてみることにした。
Windowsではないので WIN32OLE が使えないからね。
記事的には、WIN32OLEの方がいろいろあってやりやすそうだったのだけど。
ま、汎用性が高い方が好きなので、試して見るかってことで。
POI は、Word,Excel, PowerPoint といったMSOffice製品のドキュメントフォーマットを、読み込み、生成できる Java ベースのツール。
ま、実際には、Excelが主だと思うけど。

http://tinyurl.com/cpq7so
Ruby Java のブリッジとしては、最初 検索したら yajb というのが見つかったので、入れてみたのだが、どうも動かない。

/opt/local/lib/ruby/site_ruby/1.8/yajb/comm_bstream.rb:27:in `initialize': getaddrinfo: nodename nor servname provided, or not known (SocketError)
        from /opt/local/lib/ruby/site_ruby/1.8/yajb/comm_bstream.rb:27:in `open'
        from /opt/local/lib/ruby/site_ruby/1.8/yajb/comm_bstream.rb:27:in `get_port_number'
        from /opt/local/lib/ruby/site_ruby/1.8/yajb/comm_bstream.rb:36:in `get_bridge_args'
        from /opt/local/lib/ruby/site_ruby/1.8/yajb/jbridge.rb:411:in `__startup_JVM'
        from /opt/local/lib/ruby/site_ruby/1.8/yajb/jbridge.rb:384:in `__build_bridge'
        from /opt/local/lib/ruby/site_ruby/1.8/yajb/jbridge.rb:605:in `jimport'
        from ext_poi.rb:15

サンプルの実行を試して見ると、
jimport で、こんな感じのエラーがはかれる。で、一旦あきらめた。
ちなみに MacPort で rubyをいれているので、/opt/local/bin の下に rubyがいます。

http://rjb.rubyforge.org/
一方、rjbの方は、gemからインストールできる。

sudo gem install rjb

Building native extensions.  This could take a while...
ERROR:  Error installing rjb:
        ERROR: Failed to build gem native extension.
/opt/local/bin/ruby extconf.rb install rjb
extconf.rb:45: JAVA_HOME is not set. (RuntimeError)
Gem files will remain installed in /opt/local/lib/ruby/gems/1.8/gems/rjb-1.1.7 for inspection.
Results logged to /opt/local/lib/ruby/gems/1.8/gems/rjb-1.1.7/ext/gem_make.out

ま、こんな感じのエラーがはかれる。
インストールそのものは、一応できているっぽくて、
require 'rjb'
で、動くようにはなっている。

JAVA_HOME=/Library/Java/Home は、設定してあるのに…。

DYLD_LIBRARY_PATH とか、色々設定してみたが変わらず。
sudo を使うと、JAVA_HOME が gem のインストーラのプロセスに渡らないということらし。

sudo -s
gem install rjb

ってやるか、

sudo env JAVA_HOME=$JAVA_HOME gem install rjb

って、渡してやれば良かったようだ。
他にも sudoers に書いてやるってこともできるみたいだけど、やんないとおもう。
Defaults env_keep+=JAVA_HOME

一応メモ

Comments