RubyはともかくCで書かれた拡張ライブラリになるとかなりOS固有の部分がでてきます。 例えばfoo_ext.bundleとbar_ext.bundleが同名の関数fを定義していると、シンボルの束縛がうまくいかず、意図したfが呼ばれないことがあります。 確認方法 DYLD_PRINT_BINDINGS環境変数をYESにして実行すると、各シンボルがどのように解決されているかを確認できます。 $ DYLD_PRINT_BINDINGS=YES ruby app.rb 2>&1 | grep _f dyld: lazy bind: foo_ext.bundle:0x105C55010 = foo_ext.bundle:_f, *0x105C55010 = 0x105C54E90 dyld: lazy bind: bar_ext.bundle:0x105C88010 = foo_ext.bundl