ocra + Ruby/SDL
Ruby/SDL を ocra で exe 化した際にはまったのでメモしておきます。
(Ruby1.9.1を想定しています。1.8 なら exerb でいいんジャネ?)
Ruby/SDL を使用したスクリプトを ocra で exe にまとめようとすると、
sdl_ext.so が見つからないというエラーが発生します。
これは Ruby/SDL を普通にインストールした場合、
.so
.dll
.rb
なファイルはそれぞれ
ext
dll
lib
というディレクトリに分けて配置されます。
> ruby foo.rb
と実行した際には $: にはきちんと ext dll lib それぞれパスが通っているので、
exe 化の際にはもちろんリンクするべきファイルは拾ってこれますが、
いざ exe を実行した場合、$: には lib しかパスが入っていません!
DLL に関してはテンポラリディレクトリ下の bin ディレクトリ(すなわち ruby.exeがあるところ)
に展開されるので問題はないですし、$: に lib ディレクトリが入っているので
sdl.rb も発見することができますが、ext は忘れ去られているので sdl_ext.so が見つからないので
エラーになります。
なので。
ext/sdl_ext.so
を
sdl.rb のある lib ディレクトリに移動させておきましょう。
これだけで解決します。