Google SketchupではRubyをサポートしており、Macならば
/Library/Application Support/Google SketchUp/Plugins
配下にhoge.rbファイルを置くとSUの起動時に自動で読み込んでくれる。
2nd lifeさんではRSS記事を読み込んで表示するサンプルを紹介されているが、自分がこれをコピペでやった時にハマったのでメモ。
Sketchup組み込みのRubyはsocketまわりが使えないらしく、上記コードでは$LOAD_PATHにてOSに入れたRubyのライブラリを叩いてRSSを読み込んでらっしゃる。ところがこれを実行しようとしたところ
no such file to load -- stringio
このエラーが出て実行できない。
もちろん$LOAD_PATHはMac用に/usr/local/lib/ruby/1.8に書き換えたが、どうにもこうにも no such file エラーが出まくりハマった。ご迷惑を顧みず2nd lifeさんに直接質問したら、即レスで『$LOAD_PATH に stringio.so が無いのでは?』とのこと。
なるほど、たしかに/usr/local/lib/ruby/1.8にstringioというファイル名は見当たらない。
# ちなみにwindowsではstringio.soと共有ライブラリの形で置かれているが、
# macではRubyコードそのままにstringio.rbとして置かれるようだ。
Rubyに関しては、configureにはprefixやreadline系のオプションはつけたものの、他は普通にconfigure, make, makeinstallしたのでデフォルトインストールのはず。
どうやらデフォルトインストールではstringioはうまいこと入らないらしい。
なので以前は、makeの際に[ruby-1.8.4ソースフォルダ]/ext/Setup内のstringioのコメントアウトを外して実行してみるとなんとかいけたのだが、そうするとrailsやgemsが動かなくなった。
そこで今回リベンジも兼ねてなにかいい方法は無いかと再び調べてみたら、なんとstringio.rbを配布しているサイトが。。
そしてなんとここで落としたstringio.rbを
/usr/local/lib/ruby/1.8
に配置すると、makeし直さなくてもちゃんとSketchupで上記のRubyコードが実行できた。
試しに空ファイルのstringio.rbを置いてもみたが、それではやはりエラーが返ってくるだけであった。
この方法が正しいのかは謎。。